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

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


[*] Function strcat tear down of liblttng-ust-ctl.so.5.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-ctl.so.5.0.0 @ 0x91e4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000091e4 ()                                      | void fcn_000091e4 (int16_t arg_1h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     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_4ch;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_80h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000091e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000091e8 sub sp, 0x5c                                      |     
    0x000091ea mov r7, r1                                        |     r7 = r1;
    0x000091ec str r1, [sp, 0x10]                                |     var_10h = r1;
    0x000091ee mov r6, r3                                        |     r6 = r3;
    0x000091f0 mov r4, r0                                        |     r4 = r0;
    0x000091f2 ldr r1, [pc, 0x3c4]                               |     
    0x000091f4 add r5, sp, 0x4c                                  |     r5 += var_4ch;
    0x000091f6 ldr r3, [pc, 0x3c4]                               |     r3 = *(0x95be);
    0x000091f8 ldr.w sb, [sp, 0x80]                              |     sb = var_80h;
    0x000091fc add r1, pc                                        |     r1 = 0x127ba;
    0x000091fe ldr r3, [r1, r3]                                  |     
    0x00009200 ldr r3, [r3]                                      |     r3 = *(0x127ba);
    0x00009202 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x00009204 mov.w r3, 0                                       |     r3 = 0;
    0x00009208 adds r3, r6, 4                                    |     r3 = r6 + 4;
    0x0000920a ldm.w r3, {r0, r1}                                |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
    0x0000920e add.w r3, r4, 0x24                                |     r3 = r4 + 0x24;
    0x00009212 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x00009216 str r2, [r4, 0x2c]                                |     *((r4 + 0x2c)) = r2;
    0x00009218 ldrb r3, [r7, 0x14]                               |     r3 = *((r7 + 0x14));
    0x0000921a ldr r2, [r6]                                      |     r2 = *(r6);
    0x0000921c stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x00009220 mov r0, r7                                        |     r0 = r7;
    0x00009222 and r7, r3, 1                                     |     r7 = r3 & 1;
    0x00009226 ldr r3, [r4, 0x24]                                |     r3 = *((r4 + 0x24));
    0x00009228 ldr r1, [r2, 4]                                   |     r1 = *((r2 + 4));
    0x0000922a ldr r0, [r0, 0x18]                                |     r0 = *((r0 + 0x18));
    0x0000922c invalid                                           |     
    0x00009230 str r0, [sp, 0x3fc]                               |     *((sp + 0x3fc)) = r0;
                                                                 |     if (r3 >= r6) {
    0x00009232 bhs.w 0x95aa                                      |         goto label_6;
                                                                 |     }
    0x00009236 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x0000923a ldr r1, [r4, 0x28]                                |     r1 = *((r4 + 0x28));
    0x0000923c add.w r2, r2, r3, lsl 4                           |     r2 += (r3 << 4);
    0x00009240 add.w r0, r1, 0x240                               |     r0 = r1 + 0x240;
    0x00009244 ldr r3, [r2, 0x20]                                |     r3 = *((r2 + 0x20));
    0x00009246 cmp r0, r3                                        |     
                                                                 |     if (r0 > r3) {
    0x00009248 bhi.w 0x95aa                                      |         goto label_6;
                                                                 |     }
    0x0000924c ldr r3, [r2, 0x1c]                                |     r3 = *((r2 + 0x1c));
    0x0000924e add r3, r1                                        |     r3 += r1;
    0x00009250 ldr r3, [r3, 0x54]                                |     r3 = *((r3 + 0x54));
    0x00009252 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00009254 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00009256 beq.w 0x9474                                      |         goto label_7;
                                                                 |     }
    0x0000925a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x0000925c asrs r0, r0, 0x14                                 |     r0 >>= 0x14;
    0x0000925e asrs r1, r1, 0x19                                 |     r1 >>= 0x19;
                                                                 | label_1:
    0x00009260 movs r0, 0x48                                     |     r0 = 0x48;
    0x00009262 blx 0x3364                                        |     r0 = fcn_00003364 ();
    0x00009266 subs r7, r0, 0                                    |     r7 = r0 - 0;
                                                                 |     if (r7 <= r0) {
    0x00009268 ble.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x0000926c movs r1, 4                                        |     r1 = 4;
    0x0000926e mov r0, sb                                        |     r0 = sb;
    0x00009270 add.w r8, sp, 0x2c                                |     r8 += var_2ch;
    0x00009274 bl 0x10170                                        |     fcn_00010170 (r0, r1, r2);
    0x00009278 lsl.w r2, fp, 3                                   |     r2 = fp << 3;
    0x0000927c mov r1, sb                                        |     r1 = sb;
    0x0000927e mov r0, r8                                        |     r0 = r8;
    0x00009280 bl 0x1010c                                        |     r0 = fcn_0001010c (r0, r1, r2);
    0x00009284 ldm.w r8, {r0, r1}                                |     r0 = *(r8);
                                                                 |     r1 = *((r8 + 4));
    0x00009288 add.w r3, r4, 0x14                                |     r3 = r4 + 0x14;
    0x0000928c stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x00009290 ldr r2, [r6]                                      |     r2 = *(r6);
    0x00009292 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00009294 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x00009298 ldr r1, [r2, 4]                                   |     r1 = *((r2 + 4));
    0x0000929a cmp r3, r1                                        |     
                                                                 |     if (r3 >= r1) {
    0x0000929c bhs.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x000092a0 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x000092a4 add.w r2, r2, r3, lsl 4                           |     r2 += (r3 << 4);
    0x000092a8 ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x000092aa ldr r1, [r2, 0x20]                                |     r1 = *((r2 + 0x20));
    0x000092ac add.w r0, r3, 8                                   |     r0 = r3 + 8;
    0x000092b0 cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x000092b2 bhi.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x000092b6 ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x000092b8 cmn r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x000092ba beq.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x000092be mov r1, r7                                        |     r1 = r7;
    0x000092c0 mov r0, sb                                        |     r0 = sb;
    0x000092c2 bl 0x10170                                        |     fcn_00010170 (r0, r1, r2);
    0x000092c6 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000092c8 add r7, sp, 0x34                                  |     r7 += var_34h;
    0x000092ca mov r1, sb                                        |     r1 = sb;
    0x000092cc mov r0, r7                                        |     r0 = r7;
    0x000092ce mul r2, fp, r3                                    |     r2 = fp * r3;
    0x000092d2 bl 0x1010c                                        |     r0 = fcn_0001010c (r0, r1, r2);
    0x000092d6 ldm.w r7, {r0, r1}                                |     r0 = *(r7);
                                                                 |     r1 = *((r7 + 4));
    0x000092da add.w r3, r4, 0x1c                                |     r3 = r4 + 0x1c;
    0x000092de stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x000092e2 ldr r2, [r6]                                      |     r2 = *(r6);
    0x000092e4 ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x000092e6 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x000092ea ldr r1, [r2, 4]                                   |     r1 = *((r2 + 4));
    0x000092ec cmp r3, r1                                        |     
                                                                 |     if (r3 >= r1) {
    0x000092ee bhs.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x000092f2 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x000092f6 add.w r2, r2, r3, lsl 4                           |     r2 += (r3 << 4);
    0x000092fa ldr r3, [r4, 0x20]                                |     r3 = *((r4 + 0x20));
    0x000092fc ldr r1, [r2, 0x20]                                |     r1 = *((r2 + 0x20));
    0x000092fe adds r0, r3, 1                                    |     r0 = r3 + 1;
    0x00009300 cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x00009302 bhi.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x00009306 ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x00009308 cmn r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x0000930a beq.w 0x9454                                      |         goto label_2;
                                                                 |     }
    0x0000930e cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x00009312 beq 0x93c0                                        |         goto label_8;
                                                                 |     }
    0x00009314 mov.w r8, 0                                       |     r8 = 0;
    0x00009318 add.w sl, sp, 0x3c                                |     sl += var_3ch;
    0x0000931c str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h]");
                                                                 |     do {
    0x00009320 movs r1, 4                                        |         r1 = 4;
    0x00009322 mov r0, sb                                        |         r0 = sb;
    0x00009324 bl 0x10170                                        |         fcn_00010170 (r0, r1, r2);
    0x00009328 ldr r2, [r6]                                      |         r2 = *(r6);
    0x0000932a ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0000932c ldr r1, [r2, 4]                                   |         r1 = *((r2 + 4));
    0x0000932e cmp r3, r1                                        |         
                                                                 |         if (r3 >= r1) {
    0x00009330 bhs.w 0x9590                                      |             goto label_9;
                                                                 |         }
    0x00009334 add.w r3, r3, r3, lsl 1                           |         r3 += (r3 << 1);
    0x00009338 lsl.w r7, r8, 3                                   |         r7 = r8 << 3;
    0x0000933c add.w r2, r2, r3, lsl 4                           |         r2 += (r3 << 4);
    0x00009340 ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
    0x00009342 ldr r1, [r2, 0x20]                                |         r1 = *((r2 + 0x20));
    0x00009344 add r3, r7                                        |         r3 += r7;
    0x00009346 add.w r0, r3, 8                                   |         r0 = r3 + 8;
    0x0000934a cmp r0, r1                                        |         
                                                                 |         if (r0 > r1) {
    0x0000934c bhi.w 0x9590                                      |             goto label_9;
                                                                 |         }
    0x00009350 ldr r2, [r2, 0x1c]                                |         r2 = *((r2 + 0x1c));
    0x00009352 mov r1, sb                                        |         r1 = sb;
    0x00009354 mov r0, sl                                        |         r0 = sl;
    0x00009356 add.w fp, r2, r3                                  |         
    0x0000935a movs r2, 0x28                                     |         r2 = 0x28;
    0x0000935c bl 0x1010c                                        |         r0 = fcn_0001010c (r0, r1, r2);
    0x00009360 ldm.w sl, {r0, r1}                                |         r0 = *(sl);
                                                                 |         r1 = *((sl + 4));
    0x00009364 stm.w fp, {r0, r1}                                |         *(fp) = r0;
                                                                 |         *((fp + 4)) = r1;
    0x00009368 ldr r3, [r6]                                      |         r3 = *(r6);
    0x0000936a ldr r2, [r4, 0x14]                                |         r2 = *((r4 + 0x14));
    0x0000936c stm.w r5, {r0, r1}                                |         *(r5) = r0;
                                                                 |         *((r5 + 4)) = r1;
    0x00009370 ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x00009372 cmp r2, r0                                        |         
                                                                 |         if (r2 >= r0) {
    0x00009374 bhs.w 0x95b0                                      |             goto label_10;
                                                                 |         }
    0x00009378 add.w r2, r2, r2, lsl 1                           |         r2 += (r2 << 1);
    0x0000937c ldr r1, [r4, 0x18]                                |         r1 = *((r4 + 0x18));
    0x0000937e add.w r2, r3, r2, lsl 4                           |         r2 = r3 + (r2 << 4);
    0x00009382 add r7, r1                                        |         r7 += r1;
    0x00009384 ldr r1, [r2, 0x20]                                |         r1 = *((r2 + 0x20));
    0x00009386 add.w ip, r7, 8                                   |         
    0x0000938a cmp ip, r1                                        |         
                                                                 |         if (ip > r1) {
    0x0000938c bhi.w 0x95b0                                      |             goto label_10;
                                                                 |         }
    0x00009390 ldr r1, [r2, 0x1c]                                |         r1 = *((r2 + 0x1c));
    0x00009392 ldr r2, [r1, r7]                                  |         r2 = *((r1 + r7));
    0x00009394 add r1, r7                                        |         r1 += r7;
    0x00009396 cmp r2, r0                                        |         
                                                                 |         if (r2 >= r0) {
    0x00009398 bhs 0x9454                                        |             goto label_2;
                                                                 |         }
    0x0000939a add.w r2, r2, r2, lsl 1                           |         r2 += (r2 << 1);
    0x0000939e add.w r3, r3, r2, lsl 4                           |         r3 += (r2 << 4);
    0x000093a2 ldr r2, [r1, 4]                                   |         r2 = *((r1 + 4));
    0x000093a4 ldr r1, [r3, 0x20]                                |         r1 = *((r3 + 0x20));
    0x000093a6 add.w r0, r2, 0x28                                |         r0 = r2 + 0x28;
    0x000093aa cmp r0, r1                                        |         
                                                                 |         if (r0 > r1) {
    0x000093ac bhi 0x9454                                        |             goto label_2;
                                                                 |         }
    0x000093ae ldr r3, [r3, 0x1c]                                |         r3 = *((r3 + 0x1c));
    0x000093b0 cmn r3, r2                                        |         
                                                                 |         if (r3 == r2) {
    0x000093b2 beq 0x9454                                        |             goto label_2;
                                                                 |         }
    0x000093b4 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x000093b6 add.w r8, r8, 1                                   |         r8++;
    0x000093ba cmp r3, r8                                        |         
    0x000093bc bne 0x9320                                        |         
                                                                 |     } while (r3 != r8);
    0x000093be mov fp, r3                                        |     
                                                                 | label_8:
    0x000093c0 movs r1, 4                                        |     r1 = 4;
    0x000093c2 mov r0, sb                                        |     r0 = sb;
    0x000093c4 bl 0x10170                                        |     fcn_00010170 (r0, r1, r2);
    0x000093c8 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000093ca add r7, sp, 0x44                                  |     r7 += var_44h;
    0x000093cc mov r1, sb                                        |     r1 = sb;
    0x000093ce mov r0, r7                                        |     r0 = r7;
    0x000093d0 lsls r2, r3, 2                                    |     r2 = r3 << 2;
    0x000093d2 bl 0x1010c                                        |     r0 = fcn_0001010c (r0, r1, r2);
    0x000093d6 ldm.w r7, {r0, r1}                                |     r0 = *(r7);
                                                                 |     r1 = *((r7 + 4));
    0x000093da stm.w r4, {r0, r1}                                |     *(r4) = r0;
                                                                 |     *((r4 + 4)) = r1;
    0x000093de ldr r3, [r6]                                      |     r3 = *(r6);
    0x000093e0 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x000093e4 ldr r0, [r4]                                      |     r0 = *(r4);
    0x000093e6 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x000093e8 cmp r0, r2                                        |     
                                                                 |     if (r0 >= r2) {
    0x000093ea bhs 0x9454                                        |         goto label_2;
                                                                 |     }
    0x000093ec add.w r0, r0, r0, lsl 1                           |     r0 += (r0 << 1);
    0x000093f0 ldr r7, [r4, 4]                                   |     r7 = *((r4 + 4));
    0x000093f2 add.w r0, r3, r0, lsl 4                           |     r0 = r3 + (r0 << 4);
    0x000093f6 add.w ip, r7, 4                                   |     
    0x000093fa ldr r1, [r0, 0x20]                                |     r1 = *((r0 + 0x20));
    0x000093fc cmp ip, r1                                        |     
                                                                 |     if (ip > r1) {
    0x000093fe bhi 0x9454                                        |         goto label_2;
                                                                 |     }
    0x00009400 ldr r1, [r0, 0x1c]                                |     r1 = *((r0 + 0x1c));
    0x00009402 cmn r1, r7                                        |     
                                                                 |     if (r1 == r7) {
    0x00009404 beq 0x9454                                        |         goto label_2;
                                                                 |     }
    0x00009406 ldr r7, [sp, 8]                                   |     r7 = var_8h;
    0x00009408 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0000940a beq 0x947a                                        |         goto label_11;
                                                                 |     }
    0x0000940c ldr.w ip, [sp, 0x10]                              |     ip = var_10h;
    0x00009410 movs r0, 0                                        |     r0 = 0;
    0x00009412 b 0x9424                                          |     
                                                                 |     while (r2 == 0) {
    0x00009414 orr r2, r0, 0x10000                               |         r2 = r0 | 0x10000;
                                                                 | label_0:
    0x00009418 adds r0, 1                                        |         r0++;
    0x0000941a str r2, [r1, r3]                                  |         *((r1 + r3)) = r2;
    0x0000941c cmp r7, r0                                        |         
                                                                 |         if (r7 == r0) {
    0x0000941e beq 0x947a                                        |             goto label_11;
                                                                 |         }
    0x00009420 ldr r3, [r6]                                      |         r3 = *(r6);
    0x00009422 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00009424 ldr r1, [r4]                                      |         r1 = *(r4);
    0x00009426 cmp r2, r1                                        |         
                                                                 |         if (r2 < r1) {
    0x00009428 bls 0x9454                                        |             goto label_2;
                                                                 |         }
    0x0000942a add.w r1, r1, r1, lsl 1                           |         r1 += (r1 << 1);
    0x0000942e add.w r1, r3, r1, lsl 4                           |         r1 = r3 + (r1 << 4);
    0x00009432 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x00009434 ldr r2, [r1, 0x20]                                |         r2 = *((r1 + 0x20));
    0x00009436 add.w r3, r3, r0, lsl 2                           |         r3 += (r0 << 2);
    0x0000943a add.w lr, r3, 4                                   |         lr = r3 + 4;
    0x0000943e cmp lr, r2                                        |         
                                                                 |         if (lr > r2) {
    0x00009440 bhi 0x9454                                        |             goto label_2;
                                                                 |         }
    0x00009442 ldr r1, [r1, 0x1c]                                |         r1 = *((r1 + 0x1c));
    0x00009444 cmn r1, r3                                        |         
                                                                 |         if (r1 == r3) {
    0x00009446 beq 0x9454                                        |             goto label_2;
                                                                 |         }
    0x00009448 ldr.w r2, [ip, 0x38]                              |         r2 = *((ip + 0x38));
    0x0000944c cmp r2, 0                                         |         
    0x0000944e beq 0x9414                                        |         
                                                                 |     }
    0x00009450 mov r2, r0                                        |     r2 = r0;
    0x00009452 b 0x9418                                          |     goto label_0;
                                                                 |     do {
                                                                 | label_2:
    0x00009454 mvn r0, 0xb                                       |         r0 = ~0xb;
                                                                 | label_5:
    0x00009458 ldr r2, [pc, 0x164]                               |         
    0x0000945a ldr r3, [pc, 0x160]                               |         r3 = *(0x95be);
    0x0000945c add r2, pc                                        |         r2 = 0x12a20;
    0x0000945e ldr r3, [r2, r3]                                  |         r3 = *(0x12a20);
    0x00009460 ldr r2, [r3]                                      |         r2 = *(0x12a20);
    0x00009462 ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x00009464 eors r2, r3                                       |         r2 ^= r3;
    0x00009466 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000946a bne.w 0x958c                                      |             goto label_12;
                                                                 |         }
    0x0000946e add sp, 0x5c                                      |         
    0x00009470 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_7:
    0x00009474 ldr.w fp, [sp, 8]                                 |         fp = var_8h;
    0x00009478 b 0x9260                                          |         goto label_1;
                                                                 | label_11:
    0x0000947a ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x0000947c ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0000947e ldr r3, [r3, 0x38]                                |         r3 = *((r3 + 0x38));
    0x00009480 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00009482 beq 0x957e                                        |             goto label_13;
                                                                 |         }
    0x00009484 add.w r2, fp, -1                                  |         r2 = fp + -1;
                                                                 |         if (r3 == 0) {
    0x00009488 cbnz r3, 0x948e                                   |             
    0x0000948a orr r2, r2, 0x10000                               |             r2 |= 0x10000;
                                                                 |         }
                                                                 | label_4:
    0x0000948e movs r1, 8                                        |         r1 = 8;
    0x00009490 mov r0, sb                                        |         r0 = sb;
    0x00009492 str r2, [r4, 8]                                   |         *((r4 + 8)) = r2;
    0x00009494 bl 0x10170                                        |         fcn_00010170 (r0, r1, r2);
    0x00009498 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x0000949a mov r0, r5                                        |         r0 = r5;
    0x0000949c mov r1, sb                                        |         r1 = sb;
    0x0000949e lsls r2, r3, 3                                    |         r2 = r3 << 3;
    0x000094a0 bl 0x1010c                                        |         r0 = fcn_0001010c (r0, r1, r2);
    0x000094a4 ldm.w r5, {r0, r1}                                |         r0 = *(r5);
                                                                 |         r1 = *((r5 + 4));
    0x000094a8 add.w r3, r4, 0xc                                 |         r3 = r4 + 0xc;
    0x000094ac add r5, sp, 0x24                                  |         r5 += var_24h;
    0x000094ae stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
    0x000094b2 ldr r3, [r6]                                      |         r3 = *(r6);
    0x000094b4 ldr r2, [r4, 0xc]                                 |         r2 = *((r4 + 0xc));
    0x000094b6 stm.w r5, {r0, r1}                                |         *(r5) = r0;
                                                                 |         *((r5 + 4)) = r1;
    0x000094ba ldr.w lr, [r3, 4]                                 |         
    0x000094be cmp r2, lr                                        |         
    0x000094c0 bhs 0x9454                                        |         
                                                                 |     } while (r2 >= lr);
    0x000094c2 add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x000094c6 ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x000094c8 add.w r1, r3, r2, lsl 4                           |     r1 = r3 + (r2 << 4);
    0x000094cc add.w r7, r0, 8                                   |     r7 = r0 + 8;
    0x000094d0 ldr r2, [r1, 0x20]                                |     r2 = *((r1 + 0x20));
    0x000094d2 cmp r7, r2                                        |     
                                                                 |     if (r7 > r2) {
    0x000094d4 bhi 0x9454                                        |         goto label_2;
                                                                 |     }
    0x000094d6 ldr r2, [r1, 0x1c]                                |     r2 = *((r1 + 0x1c));
    0x000094d8 cmn r2, r0                                        |     
                                                                 |     if (r2 == r0) {
    0x000094da beq 0x9454                                        |         goto label_2;
                                                                 |     }
    0x000094dc cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x000094e0 beq 0x9588                                        |         goto label_14;
                                                                 |     }
    0x000094e2 ldr.w sb, [sp, 0x10]                              |     sb = var_10h;
    0x000094e6 mov.w ip, 0                                       |     
    0x000094ea add.w sl, sp, 0x1c                                |     sl += var_1ch;
    0x000094ee mov r7, ip                                        |     r7 = ip;
    0x000094f0 str.w ip, [sp, 4]                                 |     __asm ("str.w ip, [var_4h]");
                                                                 | label_3:
    0x000094f4 ldr r2, [r4, 0x1c]                                |     r2 = *((r4 + 0x1c));
    0x000094f6 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x000094f8 ldr r2, [r4, 0x20]                                |     r2 = *((r4 + 0x20));
    0x000094fa str r2, [sp, 0x20]                                |     var_20h = r2;
    0x000094fc ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000094fe add r2, ip                                        |     r2 += ip;
    0x00009500 str r2, [sp, 0x20]                                |     var_20h = r2;
    0x00009502 ldr r2, [r4, 0x14]                                |     r2 = *((r4 + 0x14));
    0x00009504 cmp lr, r2                                        |     
                                                                 |     if (lr < r2) {
    0x00009506 bls 0x9454                                        |         goto label_2;
                                                                 |     }
    0x00009508 ldr r1, [r4, 0x18]                                |     r1 = *((r4 + 0x18));
    0x0000950a add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x0000950e add.w r2, r3, r2, lsl 4                           |     r2 = r3 + (r2 << 4);
    0x00009512 add.w r1, r1, r7, lsl 3                           |     r1 += (r7 << 3);
    0x00009516 ldr r0, [r2, 0x20]                                |     r0 = *((r2 + 0x20));
    0x00009518 add.w r8, r1, 8                                   |     r8 = r1 + 8;
    0x0000951c cmp r8, r0                                        |     
                                                                 |     if (r8 > r0) {
    0x0000951e bhi 0x9454                                        |         goto label_2;
                                                                 |     }
    0x00009520 ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x00009522 adds r0, r2, r1                                   |     r0 = r2 + r1;
                                                                 |     if (r0 == r2) {
    0x00009524 beq 0x9454                                        |         goto label_2;
                                                                 |     }
    0x00009526 ldr r2, [r2, r1]                                  |     r2 = *((r2 + r1));
    0x00009528 cmp lr, r2                                        |     
                                                                 |     if (lr < r2) {
    0x0000952a bls 0x9454                                        |         goto label_2;
                                                                 |     }
    0x0000952c add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x00009530 add.w r3, r3, r2, lsl 4                           |     r3 += (r2 << 4);
    0x00009534 ldr r2, [r0, 4]                                   |     r2 = *((r0 + 4));
    0x00009536 ldr r1, [r3, 0x20]                                |     r1 = *((r3 + 0x20));
    0x00009538 add.w r0, r2, 0x28                                |     r0 = r2 + 0x28;
    0x0000953c cmp r0, r1                                        |     
                                                                 |     if (r0 > r1) {
    0x0000953e bhi 0x9454                                        |         goto label_2;
                                                                 |     }
    0x00009540 ldr.w lr, [r3, 0x1c]                              |     
    0x00009544 adds.w r3, lr, r2                                 |     r3 = lr + r2;
                                                                 |     if (r3 == lr) {
    0x00009548 beq 0x9454                                        |         goto label_2;
                                                                 |     }
    0x0000954a ldm.w sl, {r0, r1}                                |     r0 = *(sl);
                                                                 |     r1 = *((sl + 4));
    0x0000954e adds r3, 0x10                                     |     r3 += 0x10;
    0x00009550 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x00009554 ldr.w r3, [sb, 0x3c]                              |     r3 = *((sb + 0x3c));
    0x00009558 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x0000955c cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0000955e bne 0x956c                                        |         
    0x00009560 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00009562 str.w r3, [lr, r2]                                |         __asm ("str.w r3, [lr, r2]");
    0x00009566 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x00009568 add r3, r2                                        |         r3 += r2;
    0x0000956a str r3, [sp, 4]                                   |         var_4h = r3;
                                                                 |     }
    0x0000956c ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0000956e adds r7, 1                                        |     r7++;
    0x00009570 cmp fp, r7                                        |     
    0x00009572 add ip, r3                                        |     
                                                                 |     if (fp != r7) {
    0x00009574 beq 0x9588                                        |         
    0x00009576 ldr r3, [r6]                                      |         r3 = *(r6);
    0x00009578 ldr.w lr, [r3, 4]                                 |         
    0x0000957c b 0x94f4                                          |         goto label_3;
                                                                 | label_13:
    0x0000957e clz r3, r3                                        |         r3 &= r3;
    0x00009582 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00009584 lsls r2, r3, 0x10                                 |         r2 = r3 << 0x10;
    0x00009586 b 0x948e                                          |         goto label_4;
                                                                 |     }
                                                                 | label_14:
    0x00009588 movs r0, 0                                        |     r0 = 0;
    0x0000958a b 0x9458                                          |     goto label_5;
                                                                 | label_12:
    0x0000958c blx 0x334c                                        |     fcn_0000334c ();
                                                                 | label_9:
    0x00009590 mov r1, sb                                        |     r1 = sb;
    0x00009592 mov r0, sl                                        |     r0 = sl;
    0x00009594 movs r2, 0x28                                     |     r2 = 0x28;
    0x00009596 bl 0x1010c                                        |     r0 = fcn_0001010c (r0, r1, r2);
    0x0000959a ldm.w sl, {r0, r1}                                |     r0 = *(sl);
                                                                 |     r1 = *((sl + 4));
    0x0000959e movs r3, 0                                        |     r3 = 0;
    0x000095a0 stm.w r5, {r0, r1}                                |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
    0x000095a4 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x000095a8 udf 0xff                                          |     __asm ("udf 0xff");
                                                                 | label_6:
    0x000095aa movs r3, 0                                        |     r3 = 0;
    0x000095ac ldr r3, [r3, 0x54]                                |     r3 = *((r3 + 0x54));
    0x000095ae udf 0xff                                          |     __asm ("udf 0xff");
                                                                 | label_10:
    0x000095b0 movs r3, 0                                        |     r3 = 0;
    0x000095b2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000095b4 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-ctl.so.5.0.0 @ 0x95c4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000095c4 ()                                  | void fcn_000095c4 (int16_t arg1, int16_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000095c4 push.w {r3, r4, r5, r6, r7, r8, sb, lr}       |     
    0x000095c8 ldr r4, [r1]                                  |     r4 = *(r1);
    0x000095ca ldr r3, [r0, 0x24]                            |     r3 = *((r0 + 0x24));
    0x000095cc ldr r2, [r4, 4]                               |     r2 = *((r4 + 4));
    0x000095ce cmp r3, r2                                    |     
                                                             |     if (r3 >= r2) {
    0x000095d0 bhs.w 0x971c                                  |         goto label_4;
                                                             |     }
    0x000095d4 add.w r3, r3, r3, lsl 1                       |     r3 += (r3 << 1);
    0x000095d8 ldr r5, [r0, 0x28]                            |     r5 = *((r0 + 0x28));
    0x000095da add.w r3, r4, r3, lsl 4                       |     r3 = r4 + (r3 << 4);
    0x000095de add.w r7, r5, 0x240                           |     r7 = r5 + 0x240;
    0x000095e2 ldr r6, [r3, 0x20]                            |     r6 = *((r3 + 0x20));
    0x000095e4 cmp r7, r6                                    |     
                                                             |     if (r7 > r6) {
    0x000095e6 bhi.w 0x971c                                  |         goto label_4;
                                                             |     }
    0x000095ea ldr r3, [r3, 0x1c]                            |     r3 = *((r3 + 0x1c));
    0x000095ec add.w lr, r3, r5                              |     lr = r3 + r5;
    0x000095f0 ldrb.w r3, [lr, 0x64]                         |     r3 = *((lr + 0x64));
    0x000095f4 ldr.w r5, [lr, 0x68]                          |     r5 = *((lr + 0x68));
    0x000095f8 lsls r6, r3, 0x1f                             |     r6 = r3 << 0x1f;
                                                             |     if (r6 >= r3) {
    0x000095fa bpl 0x96f2                                    |         goto label_5;
                                                             |     }
    0x000095fc adds r3, r5, 1                                |     r3 = r5 + 1;
    0x000095fe cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00009600 beq.w 0x9706                                  |         goto label_6;
                                                             |     }
    0x00009604 mov r5, r3                                    |     r5 = r3;
                                                             | label_1:
    0x00009606 mov.w ip, 0                                   |     
    0x0000960a b 0x9622                                      |     
                                                             |     while (r4 == 0) {
    0x0000960c orr r4, ip, 0x10000                           |         r4 = ip | 0x10000;
    0x00009610 add.w ip, ip, 1                               |         
    0x00009614 str r4, [r3, r2]                              |         *((r3 + r2)) = r4;
    0x00009616 ldr.w r3, [lr, 0x68]                          |         r3 = *((lr + 0x68));
    0x0000961a cmp r3, ip                                    |         
                                                             |         if (r3 < ip) {
    0x0000961c bls 0x965c                                    |             goto label_7;
                                                             |         }
                                                             | label_0:
    0x0000961e ldr r4, [r1]                                  |         r4 = *(r1);
    0x00009620 ldr r2, [r4, 4]                               |         r2 = *((r4 + 4));
    0x00009622 ldr r3, [r0]                                  |         r3 = *(r0);
    0x00009624 cmp r2, r3                                    |         
                                                             |         if (r2 < r3) {
    0x00009626 bls 0x96ee                                    |             goto label_8;
                                                             |         }
    0x00009628 ldr r2, [r0, 4]                               |         r2 = *((r0 + 4));
    0x0000962a add.w r3, r3, r3, lsl 1                       |         r3 += (r3 << 1);
    0x0000962e add.w r3, r4, r3, lsl 4                       |         r3 = r4 + (r3 << 4);
    0x00009632 add.w r2, r2, ip, lsl 2                       |         r2 += (ip << 2);
    0x00009636 ldr r4, [r3, 0x20]                            |         r4 = *((r3 + 0x20));
    0x00009638 adds r6, r2, 4                                |         r6 = r2 + 4;
    0x0000963a cmp r6, r4                                    |         
                                                             |         if (r6 > r4) {
    0x0000963c bhi 0x96ee                                    |             goto label_8;
                                                             |         }
    0x0000963e ldr r3, [r3, 0x1c]                            |         r3 = *((r3 + 0x1c));
    0x00009640 cmn r3, r2                                    |         
                                                             |         if (r3 == r2) {
    0x00009642 beq 0x96ee                                    |             goto label_8;
                                                             |         }
    0x00009644 ldr.w r4, [lr, 0x88]                          |         r4 = *((lr + 0x88));
    0x00009648 cmp r4, 0                                     |         
    0x0000964a beq 0x960c                                    |         
                                                             |     }
    0x0000964c mov r4, ip                                    |     r4 = ip;
    0x0000964e add.w ip, ip, 1                               |     
    0x00009652 str r4, [r3, r2]                              |     *((r3 + r2)) = r4;
    0x00009654 ldr.w r3, [lr, 0x68]                          |     r3 = *((lr + 0x68));
    0x00009658 cmp r3, ip                                    |     
                                                             |     if (r3 > ip) {
    0x0000965a bhi 0x961e                                    |         goto label_0;
                                                             |     }
                                                             | label_7:
    0x0000965c ldrb.w r3, [lr, 0x64]                         |     r3 = *((lr + 0x64));
    0x00009660 lsls r3, r3, 0x1f                             |     r3 <<= 0x1f;
    0x00009662 it mi                                         |     
                                                             |     if (r3 >= r3) {
    0x00009664 addmi r3, r5, -1                              |         r3 = r5 + -1;
                                                             |     }
                                                             |     if (r3 < r3) {
    0x00009668 bmi 0x970a                                    |         goto label_9;
                                                             |     }
    0x0000966a ldr.w r3, [lr, 0x88]                          |     r3 = *((lr + 0x88));
    0x0000966e clz r3, r3                                    |     r3 &= r3;
    0x00009672 lsrs r3, r3, 5                                |     r3 >>= 5;
    0x00009674 lsls r3, r3, 0x10                             |     r3 <<= 0x10;
                                                             | label_3:
    0x00009676 mov.w ip, 0                                   |     
    0x0000967a str r3, [r0, 8]                               |     *((r0 + 8)) = r3;
    0x0000967c mov r7, ip                                    |     r7 = ip;
                                                             |     if (r5 == 0) {
    0x0000967e cbz r5, 0x96e4                                |         goto label_2;
                                                             |     }
                                                             |     do {
    0x00009680 ldr r2, [r1]                                  |         r2 = *(r1);
    0x00009682 ldr r3, [r0, 0x14]                            |         r3 = *((r0 + 0x14));
    0x00009684 ldr.w r8, [r2, 4]                             |         r8 = *((r2 + 4));
    0x00009688 cmp r3, r8                                    |         
                                                             |         if (r3 >= r8) {
    0x0000968a bhs 0x96ee                                    |             goto label_8;
                                                             |         }
    0x0000968c ldr r4, [r0, 0x18]                            |         r4 = *((r0 + 0x18));
    0x0000968e add.w r3, r3, r3, lsl 1                       |         r3 += (r3 << 1);
    0x00009692 add.w r3, r2, r3, lsl 4                       |         r3 = r2 + (r3 << 4);
    0x00009696 add.w r4, r4, ip, lsl 3                       |         r4 += (ip << 3);
    0x0000969a ldr r6, [r3, 0x20]                            |         r6 = *((r3 + 0x20));
    0x0000969c add.w sb, r4, 8                               |         sb = r4 + 8;
    0x000096a0 cmp sb, r6                                    |         
                                                             |         if (sb > r6) {
    0x000096a2 bhi 0x96ee                                    |             goto label_8;
                                                             |         }
    0x000096a4 ldr r3, [r3, 0x1c]                            |         r3 = *((r3 + 0x1c));
    0x000096a6 adds r6, r3, r4                               |         r6 = r3 + r4;
                                                             |         if (r6 == r3) {
    0x000096a8 beq 0x96ee                                    |             goto label_8;
                                                             |         }
    0x000096aa ldr r3, [r3, r4]                              |         r3 = *((r3 + r4));
    0x000096ac cmp r3, r8                                    |         
                                                             |         if (r3 >= r8) {
    0x000096ae bhs 0x96ee                                    |             goto label_8;
                                                             |         }
    0x000096b0 add.w r3, r3, r3, lsl 1                       |         r3 += (r3 << 1);
    0x000096b4 ldr r4, [r6, 4]                               |         r4 = *((r6 + 4));
    0x000096b6 add.w r2, r2, r3, lsl 4                       |         r2 += (r3 << 4);
    0x000096ba add.w r6, r4, 0x28                            |         r6 = r4 + 0x28;
    0x000096be ldr r3, [r2, 0x20]                            |         r3 = *((r2 + 0x20));
    0x000096c0 cmp r6, r3                                    |         
                                                             |         if (r6 > r3) {
    0x000096c2 bhi 0x96ee                                    |             goto label_8;
                                                             |         }
    0x000096c4 ldr r3, [r2, 0x1c]                            |         r3 = *((r2 + 0x1c));
    0x000096c6 adds r3, r3, r4                               |         r3 += r4;
                                                             |         if (r3 == r3) {
    0x000096c8 beq 0x96ee                                    |             goto label_8;
                                                             |         }
    0x000096ca ldr.w r2, [lr, 0x84]                          |         r2 = *((lr + 0x84));
                                                             |         if (r2 == 0) {
    0x000096ce cbz r2, 0x9718                                |             goto label_10;
                                                             |         }
    0x000096d0 str r7, [r3, 4]                               |         *((r3 + 4)) = r7;
    0x000096d2 ldr.w r2, [lr, 0x84]                          |         r2 = *((lr + 0x84));
                                                             |         if (r2 == 0) {
    0x000096d6 cbz r2, 0x9718                                |             goto label_10;
                                                             |         }
    0x000096d8 str r7, [r3, 8]                               |         *((r3 + 8)) = r7;
    0x000096da add.w ip, ip, 1                               |         
    0x000096de str r7, [r3, 0xc]                             |         *((r3 + 0xc)) = r7;
    0x000096e0 cmp ip, r5                                    |         
    0x000096e2 bne 0x9680                                    |         
                                                             |     } while (ip != r5);
                                                             | label_2:
    0x000096e4 ldr.w r3, [lr, 0x84]                          |     r3 = *((lr + 0x84));
                                                             |     if (r3 == 0) {
    0x000096e8 cbz r3, 0x9718                                |         goto label_10;
                                                             |     }
    0x000096ea movs r3, 0                                    |     r3 = 0;
    0x000096ec str r3, [r0, 0x30]                            |     *((r0 + 0x30)) = r3;
                                                             | label_8:
    0x000096ee pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |     
                                                             | label_5:
    0x000096f2 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000096f4 bne 0x9606                                    |         goto label_1;
                                                             |     }
    0x000096f6 ldr.w r3, [lr, 0x88]                          |     r3 = *((lr + 0x88));
    0x000096fa clz r3, r3                                    |     r3 &= r3;
    0x000096fe lsrs r3, r3, 5                                |     r3 >>= 5;
    0x00009700 lsls r3, r3, 0x10                             |     r3 <<= 0x10;
    0x00009702 str r3, [r0, 8]                               |     *((r0 + 8)) = r3;
    0x00009704 b 0x96e4                                      |     goto label_2;
                                                             | label_6:
    0x00009706 mov r3, r5                                    |     r3 = r5;
    0x00009708 movs r5, 1                                    |     r5 = 1;
                                                             | label_9:
    0x0000970a ldr.w r2, [lr, 0x88]                          |     r2 = *((lr + 0x88));
    0x0000970e cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00009710 bne 0x9676                                    |         goto label_3;
                                                             |     }
    0x00009712 orr r3, r3, 0x10000                           |     r3 |= 0x10000;
    0x00009716 b 0x9676                                      |     goto label_3;
                                                             | label_10:
    0x00009718 bl 0x91c4                                     |     fcn_000091c4 (r0);
                                                             | label_4:
    0x0000971c movs r3, 0                                    |     r3 = 0;
    0x0000971e ldr r3, [r3, 0x68]                            |     r3 = *((r3 + 0x68));
    0x00009720 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-ctl.so.5.0.0 @ 0xa230 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000a230 ()                                          | void fcn_0000a230 (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     uint32_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;
    0x0000a230 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000a234 sub.w sp, sp, 0x22c                                   |     
    0x0000a238 ldr r4, [pc, 0x1d8]                                   |     
    0x0000a23a mov ip, r1                                            |     
    0x0000a23c ldr r3, [pc, 0x1d8]                                   |     r3 = *(0xa418);
    0x0000a23e add r4, pc                                            |     r4 = 0x14656;
    0x0000a240 str r2, [sp, 0x14]                                    |     var_14h = r2;
    0x0000a242 ldr r2, [r2]                                          |     r2 = *(r2);
    0x0000a244 ldr r3, [r4, r3]                                      |     
    0x0000a246 ldr.w sb, [pc, 0x1d4]                                 |     sb = *(0x0000a41c);
    0x0000a24a ldr r1, [r2, 4]                                       |     r1 = *((r2 + 4));
    0x0000a24c ldr r3, [r3]                                          |     r3 = *(0x14656);
    0x0000a24e str r3, [sp, 0x224]                                   |     var_224h = r3;
    0x0000a250 mov.w r3, 0                                           |     r3 = 0;
    0x0000a254 ldr r3, [r0, 0x24]                                    |     r3 = *((r0 + 0x24));
    0x0000a256 add sb, pc                                            |     sb += pc;
    0x0000a258 cmp r3, r1                                            |     
                                                                     |     if (r3 >= r1) {
    0x0000a25a bhs.w 0xa40c                                          |         goto label_2;
                                                                     |     }
    0x0000a25e add.w r3, r3, r3, lsl 1                               |     r3 += (r3 << 1);
    0x0000a262 ldr r6, [r0, 0x28]                                    |     r6 = *((r0 + 0x28));
    0x0000a264 add.w r3, r2, r3, lsl 4                               |     r3 = r2 + (r3 << 4);
    0x0000a268 add.w r5, r6, 0x240                                   |     r5 = r6 + 0x240;
    0x0000a26c ldr r4, [r3, 0x20]                                    |     r4 = *((r3 + 0x20));
    0x0000a26e cmp r5, r4                                            |     
                                                                     |     if (r5 > r4) {
    0x0000a270 bhi.w 0xa40c                                          |         goto label_2;
                                                                     |     }
    0x0000a274 ldr r5, [r3, 0x1c]                                    |     r5 = *((r3 + 0x1c));
    0x0000a276 ldr r4, [r0]                                          |     r4 = *(r0);
    0x0000a278 add r5, r6                                            |     r5 += r6;
    0x0000a27a ldr r6, [r5, 0x50]                                    |     r6 = *((r5 + 0x50));
    0x0000a27c cmp r1, r4                                            |     
    0x0000a27e ldr r3, [r5, 0x58]                                    |     r3 = *((r5 + 0x58));
    0x0000a280 add.w r6, r6, -1                                      |     r6 += -1;
    0x0000a284 and.w r6, r6, ip                                      |     r6 &= ip;
    0x0000a288 lsr.w ip, r6, r3                                      |     
                                                                     |     if (r1 < r4) {
    0x0000a28c bls 0xa33a                                            |         goto label_3;
                                                                     |     }
    0x0000a28e ldr r3, [r0, 4]                                       |     r3 = *((r0 + 4));
    0x0000a290 add.w r4, r4, r4, lsl 1                               |     r4 += (r4 << 1);
    0x0000a294 add.w r4, r2, r4, lsl 4                               |     r4 = r2 + (r4 << 4);
    0x0000a298 add.w r3, r3, ip, lsl 2                               |     r3 += (ip << 2);
    0x0000a29c ldr r7, [r4, 0x20]                                    |     r7 = *((r4 + 0x20));
    0x0000a29e add.w ip, r3, 4                                       |     
    0x0000a2a2 cmp ip, r7                                            |     
                                                                     |     if (ip > r7) {
    0x0000a2a4 bhi 0xa33a                                            |         goto label_3;
                                                                     |     }
    0x0000a2a6 ldr r4, [r4, 0x1c]                                    |     r4 = *((r4 + 0x1c));
    0x0000a2a8 cmn r4, r3                                            |     
                                                                     |     if (r4 == r3) {
    0x0000a2aa beq 0xa33a                                            |         goto label_3;
                                                                     |     }
    0x0000a2ac ldr.w lr, [r4, r3]                                    |     
    0x0000a2b0 ldr.w ip, [r5, 0x88]                                  |     ip = *((r5 + 0x88));
    0x0000a2b4 uxth.w r8, lr                                         |     r8 = (int16_t) lr;
    0x0000a2b8 cmp.w ip, 0                                           |     
    0x0000a2bc bne 0xa358                                            |     
                                                                     |     while (1) {
    0x0000a2be ldr r3, [r0, 0x14]                                    |         r3 = *((r0 + 0x14));
    0x0000a2c0 cmp r1, r3                                            |         
                                                                     |         if (r1 >= r3) {
    0x0000a2c2 bls 0xa33a                                            |             
    0x0000a2c4 ldr r4, [r0, 0x18]                                    |             r4 = *((r0 + 0x18));
    0x0000a2c6 add.w r3, r3, r3, lsl 1                               |             r3 += (r3 << 1);
    0x0000a2ca add.w r3, r2, r3, lsl 4                               |             r3 = r2 + (r3 << 4);
    0x0000a2ce add.w r4, r4, r8, lsl 3                               |             r4 += (r8 << 3);
    0x0000a2d2 ldr r0, [r3, 0x20]                                    |             r0 = *((r3 + 0x20));
    0x0000a2d4 add.w r8, r4, 8                                       |             r8 = r4 + 8;
    0x0000a2d8 cmp r8, r0                                            |             
                                                                     |             if (r8 <= r0) {
    0x0000a2da bhi 0xa33a                                            |                 
    0x0000a2dc ldr.w r8, [r3, 0x1c]                                  |                 r8 = *((r3 + 0x1c));
    0x0000a2e0 adds.w sl, r8, r4                                     |                 sl = r8 + r4;
                                                                     |                 if (sl == r8) {
    0x0000a2e4 beq 0xa33a                                            |                     goto label_3;
                                                                     |                 }
    0x0000a2e6 cmp.w ip, 0                                           |                 
                                                                     |                 if (ip == 0) {
    0x0000a2ea beq 0xa35c                                            |                     goto label_4;
                                                                     |                 }
                                                                     | label_0:
    0x0000a2ec ldr.w r3, [r8, r4]                                    |                 r3 = *((r8 + r4));
    0x0000a2f0 cmp r1, r3                                            |                 
                                                                     |                 if (r1 < r3) {
    0x0000a2f2 bls 0xa33a                                            |                     goto label_3;
                                                                     |                 }
    0x0000a2f4 add.w r3, r3, r3, lsl 1                               |                 r3 += (r3 << 1);
    0x0000a2f8 ldr.w r0, [sl, 4]                                     |                 r0 = *((sl + 4));
    0x0000a2fc add.w r3, r2, r3, lsl 4                               |                 r3 = r2 + (r3 << 4);
    0x0000a300 add.w r7, r0, 0x28                                    |                 r7 = r0 + 0x28;
    0x0000a304 ldr r4, [r3, 0x20]                                    |                 r4 = *((r3 + 0x20));
    0x0000a306 cmp r7, r4                                            |                 
                                                                     |                 if (r7 > r4) {
    0x0000a308 bhi 0xa33a                                            |                     goto label_3;
                                                                     |                 }
    0x0000a30a ldr r3, [r3, 0x1c]                                    |                 r3 = *((r3 + 0x1c));
    0x0000a30c adds r0, r3, r0                                       |                 r0 = r3 + r0;
                                                                     |                 if (r0 == r3) {
    0x0000a30e beq 0xa33a                                            |                     goto label_3;
                                                                     |                 }
    0x0000a310 ldr r4, [r0, 0x10]                                    |                 r4 = *((r0 + 0x10));
    0x0000a312 ldr r3, [r5, 0x54]                                    |                 r3 = *((r5 + 0x54));
    0x0000a314 cmp r1, r4                                            |                 
    0x0000a316 add.w r3, r3, -1                                      |                 r3 += -1;
    0x0000a31a and.w r3, r3, r6                                      |                 r3 &= r6;
                                                                     |                 if (r1 < r4) {
    0x0000a31e bls 0xa33a                                            |                     goto label_3;
                                                                     |                 }
    0x0000a320 add.w r4, r4, r4, lsl 1                               |                 r4 += (r4 << 1);
    0x0000a324 ldr r1, [r0, 0x14]                                    |                 r1 = *((r0 + 0x14));
    0x0000a326 add.w r2, r2, r4, lsl 4                               |                 r2 += (r4 << 4);
    0x0000a32a add r3, r1                                            |                 r3 += r1;
    0x0000a32c ldr r1, [r2, 0x20]                                    |                 r1 = *((r2 + 0x20));
    0x0000a32e adds r0, r3, 1                                        |                 r0 = r3 + 1;
    0x0000a330 cmp r0, r1                                            |                 
                                                                     |                 if (r0 > r1) {
    0x0000a332 bhi 0xa33a                                            |                     goto label_3;
                                                                     |                 }
    0x0000a334 ldr r0, [r2, 0x1c]                                    |                 r0 = *((r2 + 0x1c));
    0x0000a336 add r0, r3                                            |                 r0 += r3;
    0x0000a338 b 0xa33c                                              |                 
                                                                     |             }
                                                                     |         } else {
                                                                     | label_3:
    0x0000a33a movs r0, 0                                            |             r0 = 0;
                                                                     |         }
    0x0000a33c ldr r2, [pc, 0xe0]                                    |         
    0x0000a33e ldr r3, [pc, 0xd8]                                    |         r3 = *(0xa41a);
    0x0000a340 add r2, pc                                            |         r2 = 0x14764;
    0x0000a342 ldr r3, [r2, r3]                                      |         r3 = *(0x14764);
    0x0000a344 ldr r2, [r3]                                          |         r2 = *(0x14764);
    0x0000a346 ldr r3, [sp, 0x224]                                   |         r3 = var_224h;
    0x0000a348 eors r2, r3                                           |         r2 ^= r3;
    0x0000a34a mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000a34e bne 0xa408                                            |             goto label_5;
                                                                     |         }
    0x0000a350 add.w sp, sp, 0x22c                                   |         
    0x0000a354 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
    0x0000a358 mov r8, lr                                            |         r8 = lr;
    0x0000a35a b 0xa2be                                              |         
                                                                     |     }
                                                                     | label_4:
    0x0000a35c tst.w lr, 0x10000                                     |     
                                                                     |     if ((lr & 0x10000) == 0) {
    0x0000a360 beq 0xa2ec                                            |         goto label_0;
                                                                     |     }
    0x0000a362 dmb ish                                               |     __asm ("dmb ish");
                                                                     |     do {
    0x0000a366 ldrex r3, [r5]                                        |         __asm ("ldrex r3, [r5]");
    0x0000a36a adds r3, 1                                            |         r3++;
    0x0000a36c strex r2, r3, [r5]                                    |         __asm ("strex r2, r3, [r5]");
    0x0000a370 cmp r2, 0                                             |         
    0x0000a372 bne 0xa366                                            |         
                                                                     |     } while (r2 != 0);
    0x0000a374 dmb ish                                               |     __asm ("dmb ish");
    0x0000a378 ldr r3, [pc, 0xa8]                                    |     
    0x0000a37a add r3, pc                                            |     r3 = 0x147a2;
    0x0000a37c ldr.w fp, [r3]                                        |     fp = *(0x147a2);
    0x0000a380 cmp.w fp, 0                                           |     
                                                                     |     if (fp == 0) {
    0x0000a384 beq 0xa3fa                                            |         goto label_6;
                                                                     |     }
                                                                     | label_1:
    0x0000a386 cmp.w fp, 2                                           |     
    0x0000a38a beq 0xa394                                            |     
                                                                     |     while (1) {
    0x0000a38c ldr r3, [sp, 0x14]                                    |         r3 = var_14h;
    0x0000a38e ldr r2, [r3]                                          |         r2 = *(r3);
    0x0000a390 ldr r1, [r2, 4]                                       |         r1 = *((r2 + 4));
    0x0000a392 b 0xa2ec                                              |         goto label_0;
    0x0000a394 blx 0x349c                                            |         r0 = fcn_0000349c ();
    0x0000a398 ldr r3, [r0]                                          |         r3 = *(r0);
    0x0000a39a mov r7, r0                                            |         r7 = r0;
    0x0000a39c str r3, [sp, 0x1c]                                    |         var_1ch = r3;
    0x0000a39e blx 0x3454                                            |         fcn_00003454 ();
    0x0000a3a2 str r0, [sp, 0x18]                                    |         var_18h = r0;
    0x0000a3a4 blx 0x32a0                                            |         fcn_000032a0 ();
    0x0000a3a8 ldr r2, [pc, 0x7c]                                    |         
    0x0000a3aa mov.w r1, 0x200                                       |         r1 = 0x200;
    0x0000a3ae ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x0000a3b0 str r0, [sp]                                          |         *(sp) = r0;
    0x0000a3b2 add r0, sp, 0x24                                      |         r0 += var_24h;
    0x0000a3b4 add r2, pc                                            |         r2 = 0x147e0;
    0x0000a3b6 str r0, [sp, 0x18]                                    |         var_18h = r0;
    0x0000a3b8 adds r2, 0x60                                         |         r2 += 0x60;
    0x0000a3ba str r2, [sp, 0xc]                                     |         var_ch = r2;
    0x0000a3bc ldr r2, [pc, 0x6c]                                    |         
    0x0000a3be add r2, pc                                            |         r2 = 0x147ee;
    0x0000a3c0 str r2, [sp, 4]                                       |         var_4h = r2;
    0x0000a3c2 movw r2, 0x24b                                        |         r2 = 0x24b;
    0x0000a3c6 str r2, [sp, 8]                                       |         var_8h = r2;
    0x0000a3c8 ldr r2, [pc, 0x64]                                    |         
    0x0000a3ca add r2, pc                                            |         r2 = 0x147fe;
    0x0000a3cc bl 0x21d60                                            |         fcn_00021d60 (r0, r1);
    0x0000a3d0 ldr r2, [sp, 0x18]                                    |         r2 = var_18h;
    0x0000a3d2 movs r3, 0                                            |         r3 = 0;
    0x0000a3d4 strb.w r3, [r2, 0x1ff]                                |         *((r2 + 0x1ff)) = r3;
    0x0000a3d8 mov r0, r2                                            |         r0 = r2;
    0x0000a3da blx 0x346c                                            |         fcn_0000346c ();
    0x0000a3de ldr r1, [sp, 0x18]                                    |         r1 = var_18h;
    0x0000a3e0 mov r2, r0                                            |         r2 = r0;
    0x0000a3e2 mov r0, fp                                            |         r0 = fp;
    0x0000a3e4 bl 0x212e0                                            |         fcn_000212e0 (r0, r1, r2);
    0x0000a3e8 ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000a3ea str r3, [r7]                                          |         *(r7) = r3;
    0x0000a3ec ldr r3, [pc, 0x44]                                    |         r3 = *(0xa434);
    0x0000a3ee ldr.w r3, [sb, r3]                                    |         r3 = *((sb + r3));
    0x0000a3f2 ldr r0, [r3]                                          |         r0 = *(0xa434);
    0x0000a3f4 blx 0x32ac                                            |         fcn_000032ac ();
    0x0000a3f8 b 0xa38c                                              |         
                                                                     |     }
                                                                     | label_6:
    0x0000a3fa str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000a3fc bl 0x210ec                                            |     fcn_000210ec ();
    0x0000a400 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000a402 ldr.w fp, [r3]                                        |     fp = *(r3);
    0x0000a406 b 0xa386                                              |     goto label_1;
                                                                     | label_5:
    0x0000a408 blx 0x334c                                            |     fcn_0000334c ();
                                                                     | label_2:
    0x0000a40c movs r3, 0                                            |     r3 = 0;
    0x0000a40e ldr r3, [r3, 0x50]                                    |     r3 = *((r3 + 0x50));
    0x0000a410 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-ctl.so.5.0.0 @ 0xfce4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000fce4 ()                                          | void fcn_0000fce4 (int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_24h;
                                                                     |     int32_t var_4h_2;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_f4h;
                                                                     |     int16_t var_2f3h;
                                                                     |     int16_t var_2f4h;
                                                                     |     int16_t var_2fch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
                                                                     | label_30:
    0x0000f2dc svcmi 0xf0e92d                                        |     __asm ("svcmi aav.0x000000ff");
    0x0000f2e0 mov r4, r0                                            |     r4 = r0;
    0x0000f2e2 ldrd r3, r5, [r0]                                     |     __asm ("ldrd r3, r5, [r0]");
    0x0000f2e6 sub.w sp, sp, 0x2ec                                   |     
    0x0000f2ea ldr r0, [pc, 0x31c]                                   |     
    0x0000f2ec ldr r2, [pc, 0x31c]                                   |     r2 = *(0xf60c);
    0x0000f2ee cmp r5, r3                                            |     
    0x0000f2f0 ldr.w sb, [pc, 0x31c]                                 |     sb = *(0x0000f610);
    0x0000f2f4 add r0, pc                                            |     r0 = 0x1e902;
    0x0000f2f6 ldr r2, [r0, r2]                                      |     
    0x0000f2f8 add sb, pc                                            |     sb += pc;
    0x0000f2fa ldr r2, [r2]                                          |     r2 = *(0x1e902);
    0x0000f2fc str r2, [sp, 0x2e4]                                   |     var_2f4h = r2;
    0x0000f2fe mov.w r2, 0                                           |     r2 = 0;
                                                                     |     if (r5 >= r3) {
    0x0000f302 bhs 0xf3d0                                            |         goto label_32;
                                                                     |     }
    0x0000f304 mov r6, r1                                            |     r6 = r1;
    0x0000f306 movs r1, 1                                            |     r1 = 1;
    0x0000f308 mov r0, r6                                            |     r0 = r6;
    0x0000f30a blx 0x3204                                            |     r0 = fcn_00003204 ();
    0x0000f30e mov r7, r0                                            |     r7 = r0;
    0x0000f310 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000f312 beq 0xf3d0                                            |         goto label_32;
                                                                     |     }
    0x0000f314 add.w r8, sp, 0x14                                    |     r8 += var_24h;
    0x0000f318 mov r0, r8                                            |     r0 = r8;
    0x0000f31a blx 0x3554                                            |     r0 = pthread_create (r0, r1, r2, r3);
    0x0000f31e cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f320 blt.w 0xf4c8                                          |         goto label_33;
                                                                     |     }
    0x0000f324 ldr.w r0, [r8]                                        |     r0 = *(r8);
    0x0000f328 movs r2, 1                                            |     r2 = 1;
    0x0000f32a movs r1, 2                                            |     r1 = 2;
    0x0000f32c blx 0x3584                                            |     r0 = shutdown ();
    0x0000f330 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f332 blt 0xf3f0                                            |         goto label_34;
                                                                     |     }
    0x0000f334 ldr.w r0, [r8, 4]                                     |     r0 = *((r8 + 4));
    0x0000f338 movs r2, 1                                            |     r2 = 1;
    0x0000f33a movs r1, 2                                            |     r1 = 2;
    0x0000f33c blx 0x3584                                            |     r0 = shutdown ();
    0x0000f340 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f342 blt 0xf3f0                                            |         goto label_34;
                                                                     |     }
    0x0000f344 ldr.w r0, [r8, 4]                                     |     r0 = *((r8 + 4));
    0x0000f348 mov.w r2, 0x800                                       |     r2 = 0x800;
    0x0000f34c movs r1, 4                                            |     r1 = 4;
    0x0000f34e blx 0x3584                                            |     r0 = shutdown ();
    0x0000f352 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000f354 blt 0xf39e                                            |         
    0x0000f356 add.w r2, r5, r5, lsl 1                               |         r2 = r5 + (r5 << 1);
    0x0000f35a mov r3, r8                                            |         r3 = r8;
    0x0000f35c ldm r3!, {r0, r1}                                     |         r0 = *(r3!);
                                                                     |         r1 = *((r3! + 4));
    0x0000f35e adds r5, 1                                            |         r5++;
    0x0000f360 lsls r2, r2, 4                                        |         r2 <<= 4;
    0x0000f362 add.w r5, r5, r5, lsl 1                               |         r5 += (r5 << 1);
    0x0000f366 vmov.i32 d16, 0                                       |         __asm ("vmov.i32 d16, 0");
    0x0000f36a add.w r3, r2, 0x14                                    |         r3 = r2 + 0x14;
    0x0000f36e lsls r5, r5, 4                                        |         r5 <<= 4;
    0x0000f370 str r0, [r4, r3]                                      |         *((r4 + r3)) = r0;
    0x0000f372 add r3, r4                                            |         r3 += r4;
    0x0000f374 str r1, [r3, 4]                                       |         *((r3 + 4)) = r1;
    0x0000f376 add.w r0, r2, 8                                       |         r0 = r2 + 8;
    0x0000f37a adds r3, r4, r2                                       |         r3 = r4 + r2;
    0x0000f37c mov.w r2, -1                                          |         r2 = -1;
    0x0000f380 str r2, [r3, 0x10]                                    |         *((r3 + 0x10)) = r2;
    0x0000f382 movs r2, 0                                            |         r2 = 0;
    0x0000f384 str r2, [r4, r5]                                      |         *((r4 + r5)) = r2;
    0x0000f386 movs r2, 1                                            |         r2 = 1;
    0x0000f388 strd r7, r6, [r3, 0x1c]                               |         __asm ("strd r7, r6, [r3, 0x1c]");
    0x0000f38c add r0, r4                                            |         r0 += r4;
    0x0000f38e vstr d16, [r3, 0x28]                                  |         __asm ("vstr d16, [r3, 0x28]");
    0x0000f392 str r2, [r3, 8]                                       |         *((r3 + 8)) = r2;
    0x0000f394 ldr r2, [r4, 4]                                       |         r2 = *((r4 + 4));
    0x0000f396 adds r1, r2, 1                                        |         r1 = r2 + 1;
    0x0000f398 str r1, [r4, 4]                                       |         *((r4 + 4)) = r1;
    0x0000f39a str r2, [r3, 0xc]                                     |         *((r3 + 0xc)) = r2;
    0x0000f39c b 0xf3d2                                              |         goto label_35;
                                                                     |     }
    0x0000f39e ldr r4, [pc, 0x274]                                   |     
    0x0000f3a0 add r4, pc                                            |     r4 = 0x1e9ba;
    0x0000f3a2 ldr r3, [r4]                                          |     r3 = *(0x1e9ba);
    0x0000f3a4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f3a6 beq.w 0xf552                                          |         goto label_36;
                                                                     |     }
                                                                     | label_4:
    0x0000f3aa cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0000f3ac beq 0xf47a                                            |         goto label_37;
                                                                     |     }
                                                                     |     do {
                                                                     | label_0:
    0x0000f3ae ldr.w r0, [r8]                                        |         r0 = *(r8);
    0x0000f3b2 blx 0x3684                                            |         r0 = fcn_00003684 ();
    0x0000f3b6 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f3b8 bne.w 0xf582                                          |             goto label_38;
                                                                     |         }
    0x0000f3bc ldr.w r0, [r8, 4]                                     |         r0 = *((r8 + 4));
    0x0000f3c0 blx 0x3684                                            |         r0 = fcn_00003684 ();
    0x0000f3c4 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f3c6 bne.w 0xf582                                          |             goto label_38;
                                                                     |         }
                                                                     | label_3:
    0x0000f3ca mov r0, r7                                            |         r0 = r7;
    0x0000f3cc blx 0x32d4                                            |         fcn_000032d4 ();
                                                                     | label_32:
    0x0000f3d0 movs r0, 0                                            |         r0 = 0;
                                                                     | label_35:
    0x0000f3d2 ldr r2, [pc, 0x244]                                   |         
    0x0000f3d4 ldr r3, [pc, 0x234]                                   |         r3 = *(0xf60c);
    0x0000f3d6 add r2, pc                                            |         r2 = 0x1e9f4;
    0x0000f3d8 ldr r3, [r2, r3]                                      |         r3 = *(0x1e9f4);
    0x0000f3da ldr r2, [r3]                                          |         r2 = *(0x1e9f4);
    0x0000f3dc ldr r3, [sp, 0x2e4]                                   |         r3 = var_2f4h;
    0x0000f3de eors r2, r3                                           |         r2 ^= r3;
    0x0000f3e0 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000f3e4 bne.w 0xf57e                                          |             goto label_39;
                                                                     |         }
    0x0000f3e8 add.w sp, sp, 0x2ec                                   |         
    0x0000f3ec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_34:
    0x0000f3f0 ldr r4, [pc, 0x228]                                   |         
    0x0000f3f2 add r4, pc                                            |         r4 = 0x1ea12;
    0x0000f3f4 ldr r3, [r4]                                          |         r3 = *(0x1ea12);
    0x0000f3f6 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000f3f8 beq.w 0xf55a                                          |             goto label_40;
                                                                     |         }
                                                                     | label_5:
    0x0000f3fc cmp r3, 2                                             |         
    0x0000f3fe bne 0xf3ae                                            |         
                                                                     |     } while (r3 != 2);
    0x0000f400 blx 0x349c                                            |     fcn_0000349c ();
    0x0000f404 movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f406 mov r4, r0                                            |     r4 = r0;
    0x0000f408 add r1, sp, 0x1c                                      |     r1 += var_2ch;
    0x0000f40a ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f40c blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f410 mov r6, r0                                            |     r6 = r0;
    0x0000f412 ldr.w sl, [pc, 0x20c]                                 |     sl = *(0x0000f620);
    0x0000f416 add sl, pc                                            |     sl += pc;
    0x0000f418 ldr.w r5, [sl]                                        |     r5 = *(sl);
    0x0000f41c cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000f41e beq.w 0xf56a                                          |         goto label_41;
                                                                     |     }
                                                                     | label_7:
    0x0000f422 cmp r5, 2                                             |     
                                                                     |     if (r5 != 2) {
    0x0000f424 bne 0xf3ae                                            |         goto label_0;
                                                                     |     }
    0x0000f426 ldr.w sl, [r4]                                        |     sl = *(r4);
    0x0000f42a blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f42e mov fp, r0                                            |     
    0x0000f430 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f434 ldr r2, [pc, 0x1ec]                                   |     
    0x0000f436 mov r3, fp                                            |     r3 = fp;
    0x0000f438 strd r0, r6, [sp]                                     |     __asm ("strd r0, r6, [sp]");
    0x0000f43c add r2, pc                                            |     r2 = 0x1ea64;
    0x0000f43e adds r2, 0x28                                         |     r2 += 0x28;
    0x0000f440 str r2, [sp, 8]                                       |     var_18h = r2;
    0x0000f442 ldr r2, [pc, 0x1e4]                                   |     
    0x0000f444 add r2, pc                                            |     r2 = 0x1ea72;
                                                                     | label_1:
    0x0000f446 add r6, sp, 0xe4                                      |     r6 += var_f4h;
    0x0000f448 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f44a strb r0, [r0, 4]                                      |     *((r0 + 4)) = r0;
    0x0000f44c mov r0, r6                                            |     r0 = r6;
    0x0000f44e bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000f452 movs r3, 0                                            |     r3 = 0;
    0x0000f454 mov r0, r6                                            |     r0 = r6;
    0x0000f456 strb.w r3, [sp, 0x2e3]                                |     var_2f3h = r3;
    0x0000f45a blx 0x346c                                            |     fcn_0000346c ();
    0x0000f45e mov r1, r6                                            |     r1 = r6;
    0x0000f460 mov r2, r0                                            |     r2 = r0;
    0x0000f462 mov r0, r5                                            |     r0 = r5;
    0x0000f464 bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000f468 ldr r3, [pc, 0x1c0]                                   |     r3 = *(0xf62c);
    0x0000f46a str.w sl, [r4]                                        |     __asm ("str.w sl, [r4]");
    0x0000f46e ldr.w r3, [sb, r3]                                    |     r3 = *((sb + r3));
    0x0000f472 ldr r0, [r3]                                          |     r0 = *(0xf62c);
    0x0000f474 blx 0x32ac                                            |     fcn_000032ac ();
    0x0000f478 b 0xf3ae                                              |     goto label_0;
                                                                     | label_37:
    0x0000f47a blx 0x349c                                            |     fcn_0000349c ();
    0x0000f47e movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f480 mov r4, r0                                            |     r4 = r0;
    0x0000f482 add r1, sp, 0x1c                                      |     r1 += var_2ch;
    0x0000f484 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f486 blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f48a mov r6, r0                                            |     r6 = r0;
    0x0000f48c ldr.w sl, [pc, 0x1a0]                                 |     sl = *(0x0000f630);
    0x0000f490 add sl, pc                                            |     sl += pc;
    0x0000f492 ldr.w r5, [sl]                                        |     r5 = *(sl);
                                                                     |     if (r5 == 0) {
    0x0000f496 cbz r5, 0xf4be                                        |         goto label_42;
                                                                     |     }
                                                                     | label_2:
    0x0000f498 cmp r5, 2                                             |     
                                                                     |     if (r5 != 2) {
    0x0000f49a bne 0xf3ae                                            |         goto label_0;
                                                                     |     }
    0x0000f49c ldr.w sl, [r4]                                        |     sl = *(r4);
    0x0000f4a0 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f4a4 mov fp, r0                                            |     
    0x0000f4a6 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f4aa ldr r2, [pc, 0x188]                                   |     
    0x0000f4ac mov r3, fp                                            |     r3 = fp;
    0x0000f4ae strd r0, r6, [sp]                                     |     __asm ("strd r0, r6, [sp]");
    0x0000f4b2 add r2, pc                                            |     r2 = 0x1eaec;
    0x0000f4b4 adds r2, 0x28                                         |     r2 += 0x28;
    0x0000f4b6 str r2, [sp, 8]                                       |     var_18h = r2;
    0x0000f4b8 ldr r2, [pc, 0x17c]                                   |     
    0x0000f4ba add r2, pc                                            |     r2 = 0x1eaf6;
    0x0000f4bc b 0xf446                                              |     goto label_1;
                                                                     | label_42:
    0x0000f4be bl 0x210ec                                            |     fcn_000210ec ();
    0x0000f4c2 ldr.w r5, [sl]                                        |     r5 = *(sl);
    0x0000f4c6 b 0xf498                                              |     goto label_2;
                                                                     | label_33:
    0x0000f4c8 ldr r4, [pc, 0x170]                                   |     
    0x0000f4ca add r4, pc                                            |     r4 = 0x1eb0a;
    0x0000f4cc ldr r3, [r4]                                          |     r3 = *(0x1eb0a);
    0x0000f4ce cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f4d0 beq 0xf562                                            |         goto label_43;
                                                                     |     }
                                                                     | label_6:
    0x0000f4d2 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000f4d4 bne.w 0xf3ca                                          |         goto label_3;
                                                                     |     }
    0x0000f4d8 blx 0x349c                                            |     fcn_0000349c ();
    0x0000f4dc movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f4de mov r4, r0                                            |     r4 = r0;
    0x0000f4e0 add r1, sp, 0x1c                                      |     r1 += var_2ch;
    0x0000f4e2 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f4e4 blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f4e8 mov r6, r0                                            |     r6 = r0;
    0x0000f4ea ldr.w r8, [pc, 0x154]                                 |     r8 = *(0x0000f640);
    0x0000f4ee add r8, pc                                            |     r8 += pc;
    0x0000f4f0 ldr.w r5, [r8]                                        |     r5 = *(r8);
    0x0000f4f4 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000f4f6 beq 0xf574                                            |         goto label_44;
                                                                     |     }
                                                                     | label_8:
    0x0000f4f8 cmp r5, 2                                             |     
                                                                     |     if (r5 != 2) {
    0x0000f4fa bne.w 0xf3ca                                          |         goto label_3;
                                                                     |     }
    0x0000f4fe ldr.w r8, [r4]                                        |     r8 = *(r4);
    0x0000f502 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f506 mov sl, r0                                            |     sl = r0;
    0x0000f508 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f50c ldr r2, [pc, 0x134]                                   |     
    0x0000f50e mov r3, sl                                            |     r3 = sl;
    0x0000f510 strd r0, r6, [sp]                                     |     __asm ("strd r0, r6, [sp]");
    0x0000f514 add r6, sp, 0xe4                                      |     r6 += var_f4h;
    0x0000f516 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f51a mov r0, r6                                            |     r0 = r6;
    0x0000f51c add r2, pc                                            |     r2 = 0x1eb64;
    0x0000f51e adds r2, 0x28                                         |     r2 += 0x28;
    0x0000f520 str r2, [sp, 8]                                       |     var_18h = r2;
    0x0000f522 ldr r2, [pc, 0x124]                                   |     
    0x0000f524 add r2, pc                                            |     r2 = 0x1eb72;
    0x0000f526 bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000f52a movs r3, 0                                            |     r3 = 0;
    0x0000f52c mov r0, r6                                            |     r0 = r6;
    0x0000f52e strb.w r3, [sp, 0x2e3]                                |     var_2f3h = r3;
    0x0000f532 blx 0x346c                                            |     fcn_0000346c ();
    0x0000f536 mov r1, r6                                            |     r1 = r6;
    0x0000f538 mov r2, r0                                            |     r2 = r0;
    0x0000f53a mov r0, r5                                            |     r0 = r5;
    0x0000f53c bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000f540 ldr r3, [pc, 0xe8]                                    |     r3 = *(0xf62c);
    0x0000f542 str.w r8, [r4]                                        |     __asm ("str.w r8, [r4]");
    0x0000f546 ldr.w r3, [sb, r3]                                    |     r3 = *((sb + r3));
    0x0000f54a ldr r0, [r3]                                          |     r0 = *(0xf62c);
    0x0000f54c blx 0x32ac                                            |     fcn_000032ac ();
    0x0000f550 b 0xf3ca                                              |     goto label_3;
                                                                     | label_36:
    0x0000f552 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000f556 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000f558 b 0xf3aa                                              |     goto label_4;
                                                                     | label_40:
    0x0000f55a bl 0x210ec                                            |     fcn_000210ec ();
    0x0000f55e ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000f560 b 0xf3fc                                              |     goto label_5;
                                                                     | label_43:
    0x0000f562 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000f566 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000f568 b 0xf4d2                                              |     goto label_6;
                                                                     | label_41:
    0x0000f56a bl 0x210ec                                            |     fcn_000210ec ();
    0x0000f56e ldr.w r5, [sl]                                        |     r5 = *(sl);
    0x0000f572 b 0xf422                                              |     goto label_7;
                                                                     | label_44:
    0x0000f574 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000f578 ldr.w r5, [r8]                                        |     r5 = *(r8);
    0x0000f57c b 0xf4f8                                              |     goto label_8;
                                                                     | label_39:
    0x0000f57e blx 0x334c                                            |     fcn_0000334c ();
                                                                     | label_38:
    0x0000f582 bl 0xecf8                                             |     r0 = fcn_0000ecf8 ();
    0x0000f586 cbnz r0, 0xf59c                                       |     
                                                                     |     while (r0 == 0) {
                                                                     | label_9:
    0x0000f588 ldr r3, [pc, 0xc0]                                    |         
    0x0000f58a movs r2, 0xf0                                         |         r2 = 0xf0;
    0x0000f58c ldr r1, [pc, 0xc0]                                    |         
    0x0000f58e ldr r0, [pc, 0xc4]                                    |         
    0x0000f590 add r3, pc                                            |         r3 = 0x1ebe0;
    0x0000f592 add r1, pc                                            |         r1 = 0x1ebe6;
    0x0000f594 adds r3, 0x44                                         |         r3 += 0x44;
    0x0000f596 add r0, pc                                            |         r0 = 0x1ebf0;
    0x0000f598 blx 0x36a8                                            |         fcn_000036a8 ();
    0x0000f59c blx 0x349c                                            |         fcn_0000349c ();
    0x0000f5a0 movs r2, 0xc8                                         |         r2 = 0xc8;
    0x0000f5a2 mov r5, r0                                            |         r5 = r0;
    0x0000f5a4 add r1, sp, 0x1c                                      |         r1 += var_2ch;
    0x0000f5a6 ldr r0, [r0]                                          |         r0 = *(r0);
    0x0000f5a8 blx 0x34b4                                            |         r0 = fcn_000034b4 ();
    0x0000f5ac mov r7, r0                                            |         r7 = r0;
    0x0000f5ae bl 0xecf8                                             |         r0 = fcn_0000ecf8 ();
    0x0000f5b2 cmp r0, 0                                             |         
    0x0000f5b4 beq 0xf588                                            |         
                                                                     |     }
    0x0000f5b6 ldr r6, [r5]                                          |     r6 = *(r5);
    0x0000f5b8 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f5bc mov r4, r0                                            |     r4 = r0;
    0x0000f5be blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f5c2 ldr r1, [pc, 0x94]                                    |     
    0x0000f5c4 mov r3, r4                                            |     r3 = r4;
    0x0000f5c6 ldr r2, [pc, 0x94]                                    |     
    0x0000f5c8 add r4, sp, 0xe4                                      |     r4 += var_f4h;
    0x0000f5ca str r0, [sp]                                          |     *(sp) = r0;
    0x0000f5cc mov r0, r4                                            |     r0 = r4;
    0x0000f5ce add r1, pc                                            |     r1 = 0x1ec2c;
    0x0000f5d0 str r7, [sp, 4]                                       |     var_14h = r7;
    0x0000f5d2 adds r1, 0x28                                         |     r1 += 0x28;
    0x0000f5d4 add r2, pc                                            |     r2 = 0x1ec36;
    0x0000f5d6 str r1, [sp, 8]                                       |     var_18h = r1;
    0x0000f5d8 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f5dc bl 0x21d60                                            |     r0 = fcn_00021d60 (r0, r1);
    0x0000f5de smlal r2, r3, r0, r0                                  |     __asm ("smlal r2, r3, r0, r0");
    0x0000f5e2 mov r0, r4                                            |     r0 = r4;
    0x0000f5e4 strb.w r3, [r4, 0x1ff]                                |     *((r4 + 0x1ff)) = r3;
    0x0000f5e8 blx 0x346c                                            |     fcn_0000346c ();
    0x0000f5ec mov r1, r4                                            |     r1 = r4;
    0x0000f5ee mov r2, r0                                            |     r2 = r0;
    0x0000f5f0 movs r0, 2                                            |     r0 = 2;
    0x0000f5f2 bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000f5f6 ldr r3, [pc, 0x34]                                    |     r3 = *(0xf62e);
    0x0000f5f8 str r6, [r5]                                          |     *(r5) = r6;
    0x0000f5fa ldr.w r3, [sb, r3]                                    |     r3 = *((sb + r3));
    0x0000f5fe ldr r0, [r3]                                          |     r0 = *(0xf62e);
    0x0000f600 blx 0x32ac                                            |     fcn_000032ac ();
    0x0000f604 b 0xf588                                              |     goto label_9;
                                                                     | label_31:
    0x0000f660 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f664 ldr.w r5, [pc, 0x5cc]                                 |     r5 = *(0x0000fc34);
    0x0000f668 ldr.w r4, [pc, 0x5cc]                                 |     r4 = *(0x0000fc38);
    0x0000f66c ldr.w r3, [pc, 0x5cc]                                 |     
    0x0000f670 add r5, pc                                            |     r5 += pc;
    0x0000f672 vpush {d8}                                            |     __asm ("vpush {d8}");
    0x0000f676 sub.w sp, sp, 0x2fc                                   |     
    0x0000f67a add r4, pc                                            |     r4 += pc;
    0x0000f67c str r5, [sp, 0x10]                                    |     var_10h = r5;
    0x0000f67e ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000f680 subs r4, r2, 0                                        |     r4 = r2 - 0;
    0x0000f682 ldr r3, [r3]                                          |     r3 = *(0xfc3c);
    0x0000f684 str r3, [sp, 0x2f4]                                   |     var_2f4h = r3;
    0x0000f686 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r4 < r2) {
    0x0000f68a blt.w 0xf812                                          |         goto label_13;
                                                                     |     }
    0x0000f68e ldrd r3, fp, [r0]                                     |     __asm ("ldrd r3, fp, [r0]");
    0x0000f692 mov r8, r0                                            |     r8 = r0;
    0x0000f694 cmp fp, r3                                            |     
                                                                     |     if (fp >= r3) {
    0x0000f696 bhs.w 0xf812                                          |         goto label_13;
                                                                     |     }
    0x0000f69a add.w sl, sp, 0x24                                    |     sl += var_24h;
    0x0000f69e mov r7, r1                                            |     r7 = r1;
    0x0000f6a0 mov r0, sl                                            |     r0 = sl;
    0x0000f6a2 blx 0x3554                                            |     r0 = pthread_create (r0, r1, r2, r3);
    0x0000f6a6 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f6a8 blt.w 0xfa12                                          |         goto label_45;
                                                                     |     }
    0x0000f6ac ldr.w r0, [sl]                                        |     r0 = *(sl);
    0x0000f6b0 movs r2, 1                                            |     r2 = 1;
    0x0000f6b2 movs r1, 2                                            |     r1 = 2;
    0x0000f6b4 blx 0x3584                                            |     r0 = shutdown ();
    0x0000f6b8 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f6ba blt.w 0xf948                                          |         goto label_46;
                                                                     |     }
    0x0000f6be ldr.w r0, [sl, 4]                                     |     r0 = var_4h_2;
    0x0000f6c2 movs r2, 1                                            |     r2 = 1;
    0x0000f6c4 movs r1, 2                                            |     r1 = 2;
    0x0000f6c6 blx 0x3584                                            |     r0 = shutdown ();
    0x0000f6ca cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f6cc blt.w 0xf948                                          |         goto label_46;
                                                                     |     }
    0x0000f6ce strh r4, [r7, 8]                                      |     *((r7 + 8)) = r4;
    0x0000f6d0 ldr.w r0, [sl, 4]                                     |     r0 = var_4h_2;
    0x0000f6d4 mov.w r2, 0x800                                       |     r2 = 0x800;
    0x0000f6d8 movs r1, 4                                            |     r1 = 4;
    0x0000f6da blx 0x3584                                            |     r0 = shutdown ();
    0x0000f6de cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f6e0 blt 0xf7e2                                            |         goto label_47;
                                                                     |     }
    0x0000f6e2 lsl.w r3, fp, 1                                       |     r3 = fp << 1;
    0x0000f6e6 mov r2, r7                                            |     r2 = r7;
    0x0000f6e8 mov r5, r3                                            |     r5 = r3;
    0x0000f6ea str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000f6ec mov r3, sl                                            |     r3 = sl;
    0x0000f6ee ldm r3!, {r0, r1}                                     |     r0 = *(r3!);
                                                                     |     r1 = *((r3! + 4));
    0x0000f6f0 mov r3, r5                                            |     r3 = r5;
    0x0000f6f2 add r3, fp                                            |     r3 += fp;
    0x0000f6f4 lsls r3, r3, 4                                        |     r3 <<= 4;
    0x0000f6f6 mov r5, r3                                            |     r5 = r3;
    0x0000f6f8 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000f6fa adds r5, 0x14                                         |     r5 += 0x14;
    0x0000f6fc movs r3, 0                                            |     r3 = 0;
    0x0000f6fe str.w r0, [r8, r5]                                    |     __asm ("str.w r0, [r8, r5]");
    0x0000f702 add r5, r8                                            |     r5 += r8;
    0x0000f704 mov r0, r4                                            |     r0 = r4;
    0x0000f706 str r1, [r5, 4]                                       |     *((r5 + 4)) = r1;
    0x0000f708 blx 0x3328                                            |     r0 = fcn_00003328 ();
    0x0000f70c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000f70e bne.w 0xf8c4                                          |         goto label_48;
                                                                     |     }
    0x0000f712 movs r0, 0x1e                                         |     r0 = 0x1e;
    0x0000f714 blx 0x3364                                            |     r0 = fcn_00003364 ();
    0x0000f718 subs r5, r0, 0                                        |     r5 = r0 - 0;
                                                                     |     if (r5 < r0) {
    0x0000f71a blt.w 0xf840                                          |         goto label_49;
                                                                     |     }
    0x0000f71e movs r1, 1                                            |     r1 = 1;
    0x0000f720 blx 0x3204                                            |     r0 = fcn_00003204 ();
    0x0000f724 mov r6, r0                                            |     r6 = r0;
    0x0000f726 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000f728 beq.w 0xf840                                          |         goto label_49;
                                                                     |     }
    0x0000f72c cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000f72e beq.w 0xfb4e                                          |         goto label_50;
                                                                     |     }
    0x0000f732 str.w fp, [sp, 0x1c]                                  |     __asm ("str.w fp, [var_1ch]");
    0x0000f736 mov.w sb, 0                                           |     sb = 0;
    0x0000f73a mov fp, r5                                            |     
                                                                     | label_10:
    0x0000f73c sub.w r5, r7, sb                                      |     r5 = r7 - sb;
    0x0000f740 cmp r5, fp                                            |     
    0x0000f742 it hs                                                 |     
                                                                     |     if (r5 < fp) {
    0x0000f744 movhs r5, fp                                          |         r5 = fp;
                                                                     |     }
    0x0000f746 b 0xf752                                              |     
                                                                     |     while (r2 == r0) {
    0x0000f748 blx 0x349c                                            |         r0 = fcn_0000349c ();
    0x0000f74c ldr r3, [r0]                                          |         r3 = *(r0);
    0x0000f74e cmp r3, 4                                             |         
                                                                     |         if (r3 != 4) {
    0x0000f750 bne 0xf83a                                            |             goto label_51;
                                                                     |         }
    0x0000f752 mov r2, r5                                            |         r2 = r5;
    0x0000f754 mov r1, r6                                            |         r1 = r6;
    0x0000f756 mov r0, r4                                            |         r0 = r4;
    0x0000f758 blx 0x34fc                                            |         r0 = fcn_000034fc ();
    0x0000f75c adds r2, r0, 1                                        |         r2 = r0 + 1;
    0x0000f75e beq 0xf748                                            |         
                                                                     |     }
    0x0000f760 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f762 blt 0xf83a                                            |         goto label_51;
                                                                     |     }
    0x0000f764 add sb, r0                                            |     sb += r0;
    0x0000f766 cmp r7, sb                                            |     
                                                                     |     if (r7 > sb) {
    0x0000f768 bhi 0xf73c                                            |         goto label_10;
                                                                     |     }
    0x0000f76a mov r0, r6                                            |     r0 = r6;
    0x0000f76c ldr.w fp, [sp, 0x1c]                                  |     fp = var_1ch;
    0x0000f770 blx 0x32d4                                            |     fcn_000032d4 ();
                                                                     | label_17:
    0x0000f774 mov r0, r4                                            |     r0 = r4;
    0x0000f776 blx 0x3240                                            |     r0 = fcn_00003240 ();
                                                                     |     if (r0 != 0) {
    0x0000f77a cbz r0, 0xf78a                                        |         
    0x0000f77c blx 0x349c                                            |         r0 = fcn_0000349c ();
    0x0000f780 ldr r3, [r0]                                          |         r3 = *(r0);
    0x0000f782 mov r5, r0                                            |         r5 = r0;
    0x0000f784 cmp r3, 0x16                                          |         
                                                                     |         if (r3 != 0x16) {
    0x0000f786 bne.w 0xfa98                                          |             goto label_52;
                                                                     |         }
                                                                     |     }
    0x0000f78a ldr r5, [sp, 0x14]                                    |     r5 = var_14h;
    0x0000f78c movs r6, 0                                            |     r6 = 0;
    0x0000f78e vmov.i32 d8, 0                                        |     __asm ("vmov.i32 d8, 0");
    0x0000f792 movs r2, 3                                            |     r2 = 3;
    0x0000f794 mov r1, r7                                            |     r1 = r7;
    0x0000f796 mov r0, r6                                            |     r0 = r6;
    0x0000f798 add r5, fp                                            |     r5 += fp;
    0x0000f79a add.w fp, fp, 1                                       |     
    0x0000f79e add.w fp, fp, fp, lsl 1                               |     
    0x0000f7a2 add.w r5, r8, r5, lsl 4                               |     r5 = r8 + (r5 << 4);
    0x0000f7a6 lsl.w r3, fp, 4                                       |     r3 = fp << 4;
    0x0000f7aa str.w r6, [r8, r3]                                    |     __asm ("str.w r6, [r8, r3]");
    0x0000f7ae movw r3, 0x8001                                       |     r3 = 0x8001;
    0x0000f7b2 str r4, [r5, 0x10]                                    |     *((r5 + 0x10)) = r4;
    0x0000f7b4 str r4, [sp]                                          |     *(sp) = r4;
    0x0000f7b6 vstr d8, [sp, 8]                                      |     __asm ("vstr d8, [sp, 8]");
    0x0000f7ba blx 0x3310                                            |     r0 = fcn_00003310 ();
    0x0000f7be adds r3, r0, 1                                        |     r3 = r0 + 1;
                                                                     |     if (r3 == r0) {
    0x0000f7c0 beq.w 0xfaec                                          |         goto label_53;
                                                                     |     }
    0x0000f7c4 strd r0, r7, [r5, 0x1c]                               |     __asm ("strd r0, r7, [r5, 0x1c]");
    0x0000f7c8 str r6, [r5, 8]                                       |     *((r5 + 8)) = r6;
    0x0000f7ca vstr d8, [r5, 0x28]                                   |     __asm ("vstr d8, [r5, 0x28]");
    0x0000f7ce ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000f7d0 ldr.w r3, [r8, 4]                                     |     r3 = *((r8 + 4));
    0x0000f7d4 adds r0, 8                                            |     r0 += 8;
    0x0000f7d6 adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0000f7d8 add r0, r8                                            |     r0 += r8;
    0x0000f7da str.w r2, [r8, 4]                                     |     __asm ("str.w r2, [r8, 4]");
    0x0000f7de str r3, [r5, 0xc]                                     |     *((r5 + 0xc)) = r3;
    0x0000f7e0 b 0xf814                                              |     goto label_54;
                                                                     | label_47:
    0x0000f7e2 ldr.w r4, [pc, 0x45c]                                 |     r4 = *(0x0000fc40);
    0x0000f7e6 add r4, pc                                            |     r4 += pc;
    0x0000f7e8 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000f7ea cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f7ec beq.w 0xfb3e                                          |         goto label_55;
                                                                     |     }
                                                                     | label_15:
    0x0000f7f0 cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0000f7f2 beq.w 0xf99e                                          |         goto label_56;
                                                                     |     }
                                                                     |     do {
                                                                     | label_11:
    0x0000f7f6 invalid                                               |         
    0x0000f7fa bl 0x3686                                             |         r0 = void (*0x3686)() ();
    0x0000f7fe cmp r0, 0                                             |         
    0x0000f800 lsls r0, r0, 9                                        |         r0 <<= 9;
    0x0000f802 strh r6, [r2, 0xe]                                    |         *((r2 + 0xe)) = r6;
    0x0000f804 invalid                                               |         
    0x0000f808 blx 0x3684                                            |         r0 = fcn_00003684 ();
    0x0000f80c cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f80e bne.w 0xfbb0                                          |             goto label_57;
                                                                     |         }
                                                                     | label_13:
    0x0000f812 movs r0, 0                                            |         r0 = 0;
                                                                     | label_54:
    0x0000f814 ldr.w r2, [pc, 0x42c]                                 |         r2 = *(0x0000fc44);
    0x0000f818 ldr.w r3, [pc, 0x420]                                 |         r3 = *(0xfc3c);
    0x0000f81c add r2, pc                                            |         r2 += pc;
    0x0000f81e ldr r3, [r2, r3]                                      |         r3 = *((r2 + r3));
    0x0000f820 ldr r2, [r3]                                          |         r2 = *(0xfc3c);
    0x0000f822 ldr r3, [sp, 0x2f4]                                   |         r3 = var_2f4h;
    0x0000f824 eors r2, r3                                           |         r2 ^= r3;
    0x0000f826 bl 0x5f826                                            |         void (*0x5f826)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0000f82a vsra.u32 d24, d8, 1                                   |         __asm ("vsra.u32 d24, d8, 1");
    0x0000f82e add.w sp, sp, 0x2fc                                   |         
    0x0000f832 vpop {d8}                                             |         __asm ("vpop {d8}");
    0x0000f834 ldrh r2, [r0, 0x18]                                   |         r2 = *((r0 + 0x18));
    0x0000f836 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_51:
    0x0000f83a mov r0, r6                                            |         r0 = r6;
    0x0000f83c blx 0x32d4                                            |         fcn_000032d4 ();
                                                                     | label_49:
    0x0000f840 ldr.w r4, [pc, 0x404]                                 |         r4 = *(0x0000fc48);
    0x0000f844 add r4, pc                                            |         r4 += pc;
    0x0000f846 ldr r3, [r4]                                          |         r3 = *(r4);
    0x0000f848 ldr r6, [r7]                                          |         r6 = *(r7);
    0x0000f84a cmp r6, 0                                             |         
    0x0000f84c strh r4, [r7, 0xa]                                    |         *((r7 + 0xa)) = r4;
                                                                     | label_16:
    0x0000f84e cmp r3, 2                                             |         
    0x0000f850 bne 0xf7f6                                            |         
                                                                     |     } while (r3 != 2);
    0x0000f852 blx 0x349c                                            |     fcn_0000349c ();
    0x0000f856 movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f858 mov r5, r0                                            |     r5 = r0;
    0x0000f85a add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000f85c ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f85e blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f862 mov r4, r0                                            |     r4 = r0;
    0x0000f864 ldr r7, [pc, 0x3e4]                                   |     
    0x0000f866 add r7, pc                                            |     r7 = 0x1f4b6;
    0x0000f868 invalid                                               |     
                                                                     |     if (r2 >= 0xc8) {
    0x0000f86c bhs.w 0x2db7c                                         |         void (*0x2db7c)() ();
                                                                     |     }
                                                                     | label_23:
    0x0000f870 cmp r6, 2                                             |     
                                                                     |     if (r6 != 2) {
    0x0000f872 bne 0xf7f6                                            |         goto label_11;
                                                                     |     }
    0x0000f874 ldr r7, [r5]                                          |     r7 = *(r5);
    0x0000f876 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f87a mov r8, r0                                            |     r8 = r0;
    0x0000f87c blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f880 ldr r2, [pc, 0x3cc]                                   |     
    0x0000f882 mov r3, r8                                            |     r3 = r8;
    0x0000f884 strd r0, r4, [sp]                                     |     __asm ("strd r0, r4, [sp]");
    0x0000f888 add r2, pc                                            |     r2 = 0x1f4dc;
    0x0000f88a adds r2, 0x60                                         |     r2 += 0x60;
    0x0000f88c str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f88e ldr r2, [pc, 0x3c4]                                   |     
    0x0000f890 add r2, pc                                            |     r2 = 0x1f4ea;
                                                                     | label_12:
    0x0000f892 add r4, sp, 0xf4                                      |     r4 += var_f4h;
    0x0000f894 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f898 mov r0, r4                                            |     r0 = r4;
    0x0000f89a bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000f89e movs r3, 0                                            |     r3 = 0;
    0x0000f8a0 mov r0, r4                                            |     r0 = r4;
    0x0000f8a2 strb.w r3, [sp, 0x2f3]                                |     var_2f3h = r3;
    0x0000f8a6 blx 0x346c                                            |     fcn_0000346c ();
    0x0000f8aa mov r1, r4                                            |     r1 = r4;
    0x0000f8ac mov r2, r0                                            |     r2 = r0;
    0x0000f8ae mov r0, r6                                            |     r0 = r6;
    0x0000f8b0 bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000f8b4 str r7, [r5]                                          |     *(r5) = r7;
    0x0000f8b6 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000f8b8 ldr r3, [pc, 0x39c]                                   |     r3 = *(0xfc58);
    0x0000f8ba ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000f8bc ldr r0, [r3]                                          |     r0 = *(0xfc58);
    0x0000f8be blx 0x32ac                                            |     fcn_000032ac ();
    0x0000f8c2 b 0xf7f6                                              |     goto label_11;
                                                                     | label_48:
    0x0000f8c4 ldr r4, [pc, 0x394]                                   |     
    0x0000f8c6 add r4, pc                                            |     r4 = 0x1f526;
    0x0000f8c8 ldr r3, [r4]                                          |     r3 = *(0x1f526);
    0x0000f8ca cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f8cc beq.w 0xfae4                                          |         goto label_58;
                                                                     |     }
                                                                     | label_14:
    0x0000f8d0 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000f8d2 bne 0xf7f6                                            |         goto label_11;
                                                                     |     }
    0x0000f8d4 blx 0x349c                                            |     fcn_0000349c ();
    0x0000f8d8 movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f8da mov r4, r0                                            |     r4 = r0;
    0x0000f8dc add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000f8de ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f8e0 blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f8e4 mov r5, r0                                            |     r5 = r0;
    0x0000f8e6 ldr r6, [pc, 0x378]                                   |     
    0x0000f8e8 add r6, pc                                            |     r6 = 0x1f54e;
    0x0000f8ea ldr r7, [r6]                                          |     r7 = *(0x1f54e);
    0x0000f8ec cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000f8ee beq.w 0xfb5c                                          |         goto label_59;
                                                                     |     }
                                                                     | label_19:
    0x0000f8f2 cmp r7, 2                                             |     
                                                                     |     if (r7 != 2) {
    0x0000f8f4 bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000f8f8 ldr r6, [r4]                                          |     r6 = *(r4);
    0x0000f8fa blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f8fe mov r8, r0                                            |     r8 = r0;
    0x0000f900 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f904 ldr r2, [pc, 0x35c]                                   |     
    0x0000f906 mov r3, r8                                            |     r3 = r8;
    0x0000f908 strd r0, r5, [sp]                                     |     __asm ("strd r0, r5, [sp]");
    0x0000f90c add r5, sp, 0xf4                                      |     r5 += var_f4h;
    0x0000f90e mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f912 mov r0, r5                                            |     r0 = r5;
    0x0000f914 add r2, pc                                            |     r2 = 0x1f57c;
    0x0000f916 adds r2, 0x60                                         |     r2 += 0x60;
    0x0000f918 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f91a ldr r2, [pc, 0x34c]                                   |     
    0x0000f91c add r2, pc                                            |     r2 = 0x1f58a;
    0x0000f91e bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000f922 movs r3, 0                                            |     r3 = 0;
    0x0000f924 mov r0, r5                                            |     r0 = r5;
    0x0000f926 strb.w r3, [sp, 0x2f3]                                |     var_2f3h = r3;
    0x0000f92a blx 0x346c                                            |     fcn_0000346c ();
    0x0000f92e mov r1, r5                                            |     r1 = r5;
    0x0000f930 mov r2, r0                                            |     r2 = r0;
    0x0000f932 mov r0, r7                                            |     r0 = r7;
    0x0000f934 bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000f938 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000f93a ldr r3, [pc, 0x31c]                                   |     r3 = *(0xfc5a);
    0x0000f93c str r6, [r4]                                          |     *(r4) = r6;
    0x0000f93e ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000f940 ldr r0, [r3]                                          |     r0 = *(0xfc5a);
    0x0000f942 blx 0x32ac                                            |     fcn_000032ac ();
    0x0000f946 b 0xf7f6                                              |     goto label_11;
                                                                     | label_46:
    0x0000f948 ldr r4, [pc, 0x320]                                   |     
    0x0000f94a add r4, pc                                            |     r4 = 0x1f5ba;
    0x0000f94c ldr r3, [r4]                                          |     r3 = *(0x1f5ba);
    0x0000f94e cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f950 beq.w 0xfb54                                          |         goto label_60;
                                                                     |     }
                                                                     | label_18:
    0x0000f954 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000f956 bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000f95a blx 0x349c                                            |     fcn_0000349c ();
    0x0000f95e movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f960 mov r5, r0                                            |     r5 = r0;
    0x0000f962 add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000f964 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f966 blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f96a mov r8, r0                                            |     r8 = r0;
    0x0000f96c ldr r4, [pc, 0x300]                                   |     
    0x0000f96e add r4, pc                                            |     r4 = 0x1f5e2;
    0x0000f970 ldr r6, [r4]                                          |     r6 = *(0x1f5e2);
    0x0000f972 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000f974 beq.w 0xfb84                                          |         goto label_61;
                                                                     |     }
                                                                     | label_24:
    0x0000f978 cmp r6, 2                                             |     
                                                                     |     if (r6 != 2) {
    0x0000f97a bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000f97e ldr r7, [r5]                                          |     r7 = *(r5);
    0x0000f980 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f984 mov r4, r0                                            |     r4 = r0;
    0x0000f986 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f98a ldr r2, [pc, 0x2e8]                                   |     
    0x0000f98c mov r3, r4                                            |     r3 = r4;
    0x0000f98e strd r0, r8, [sp]                                     |     __asm ("strd r0, r8, [sp]");
    0x0000f992 add r2, pc                                            |     r2 = 0x1f60c;
    0x0000f994 adds r2, 0x60                                         |     r2 += 0x60;
    0x0000f996 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f998 ldr r2, [pc, 0x2dc]                                   |     
    0x0000f99a add r2, pc                                            |     r2 = 0x1f616;
    0x0000f99c b 0xf892                                              |     goto label_12;
                                                                     | label_56:
    0x0000f99e blx 0x349c                                            |     fcn_0000349c ();
    0x0000f9a2 movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000f9a4 mov r4, r0                                            |     r4 = r0;
    0x0000f9a6 add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000f9a8 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000f9aa blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000f9ae mov r6, r0                                            |     r6 = r0;
    0x0000f9b0 ldr r7, [pc, 0x2c8]                                   |     
    0x0000f9b2 add r7, pc                                            |     r7 = 0x1f632;
    0x0000f9b4 ldr r5, [r7]                                          |     r5 = *(0x1f632);
    0x0000f9b6 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000f9b8 beq.w 0xfb64                                          |         goto label_62;
                                                                     |     }
                                                                     | label_20:
    0x0000f9bc cmp r5, 2                                             |     
                                                                     |     if (r5 != 2) {
    0x0000f9be bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000f9c2 ldr r7, [r4]                                          |     r7 = *(r4);
    0x0000f9c4 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000f9c8 mov r8, r0                                            |     r8 = r0;
    0x0000f9ca blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000f9ce ldr r2, [pc, 0x2b0]                                   |     
    0x0000f9d0 mov r3, r8                                            |     r3 = r8;
    0x0000f9d2 strd r0, r6, [sp]                                     |     __asm ("strd r0, r6, [sp]");
    0x0000f9d6 add r6, sp, 0xf4                                      |     r6 += var_f4h;
    0x0000f9d8 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000f9dc mov r0, r6                                            |     r0 = r6;
    0x0000f9de add r2, pc                                            |     r2 = 0x1f664;
    0x0000f9e0 adds r2, 0x60                                         |     r2 += 0x60;
    0x0000f9e2 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f9e4 ldr r2, [pc, 0x29c]                                   |     
    0x0000f9e6 add r2, pc                                            |     r2 = 0x1f66e;
    0x0000f9e8 bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000f9ec movs r3, 0                                            |     r3 = 0;
    0x0000f9ee mov r0, r6                                            |     r0 = r6;
    0x0000f9f0 strb.w r3, [sp, 0x2f3]                                |     var_2f3h = r3;
    0x0000f9f4 blx 0x346c                                            |     fcn_0000346c ();
    0x0000f9f8 mov r1, r6                                            |     r1 = r6;
    0x0000f9fa mov r2, r0                                            |     r2 = r0;
    0x0000f9fc mov r0, r5                                            |     r0 = r5;
    0x0000f9fe bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000fa02 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000fa04 ldr r3, [pc, 0x250]                                   |     r3 = *(0xfc58);
    0x0000fa06 str r7, [r4]                                          |     *(r4) = r7;
    0x0000fa08 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000fa0a ldr r0, [r3]                                          |     r0 = *(0xfc58);
    0x0000fa0c blx 0x32ac                                            |     fcn_000032ac ();
    0x0000fa10 b 0xf7f6                                              |     goto label_11;
                                                                     | label_45:
    0x0000fa12 ldr r4, [pc, 0x274]                                   |     
    0x0000fa14 add r4, pc                                            |     r4 = 0x1f6a2;
    0x0000fa16 ldr r3, [r4]                                          |     r3 = *(0x1f6a2);
    0x0000fa18 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000fa1a beq.w 0xfb6c                                          |         goto label_63;
                                                                     |     }
                                                                     | label_21:
    0x0000fa1e cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000fa20 bne.w 0xf812                                          |         goto label_13;
                                                                     |     }
    0x0000fa24 blx 0x349c                                            |     fcn_0000349c ();
    0x0000fa28 movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000fa2a mov r5, r0                                            |     r5 = r0;
    0x0000fa2c add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000fa2e ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000fa30 blx 0x34b4                                            |     fcn_000034b4 ();
    0x0000fa32 stcl p6, c4, [r0, -0x200]                             |     __asm ("stcl p6, c4, aav.0x000000ff");
    0x0000fa36 ldr r4, [pc, 0x254]                                   |     
    0x0000fa38 add r4, pc                                            |     r4 = 0x1f6ca;
    0x0000fa3a ldr r6, [r4]                                          |     r6 = *(0x1f6ca);
    0x0000fa3c cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000fa3e beq.w 0xfb94                                          |         goto label_64;
                                                                     |     }
                                                                     | label_26:
    0x0000fa42 cmp r6, 2                                             |     
                                                                     |     if (r6 != 2) {
    0x0000fa44 bne.w 0xf812                                          |         goto label_13;
                                                                     |     }
    0x0000fa48 ldr r7, [r5]                                          |     r7 = *(r5);
    0x0000fa4a blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000fa4e mov r4, r0                                            |     r4 = r0;
    0x0000fa50 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000fa54 ldr r2, [pc, 0x238]                                   |     
    0x0000fa56 mov r3, r4                                            |     r3 = r4;
    0x0000fa58 add r4, sp, 0xf4                                      |     r4 += var_f4h;
    0x0000fa5a mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000fa5e strd r0, r8, [sp]                                     |     __asm ("strd r0, r8, [sp]");
    0x0000fa62 mov r0, r4                                            |     r0 = r4;
    0x0000fa64 add r2, pc                                            |     r2 = 0x1f6f8;
    0x0000fa66 adds r2, 0x60                                         |     r2 += 0x60;
    0x0000fa68 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000fa6a ldr r2, [pc, 0x228]                                   |     
    0x0000fa6c add r2, pc                                            |     r2 = 0x1f706;
    0x0000fa6e bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000fa72 movs r3, 0                                            |     r3 = 0;
    0x0000fa74 mov r0, r4                                            |     r0 = r4;
    0x0000fa76 strb.w r3, [sp, 0x2f3]                                |     var_2f3h = r3;
    0x0000fa7a blx 0x346c                                            |     fcn_0000346c ();
    0x0000fa7e mov r1, r4                                            |     r1 = r4;
    0x0000fa80 mov r2, r0                                            |     r2 = r0;
    0x0000fa82 mov r0, r6                                            |     r0 = r6;
    0x0000fa84 bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000fa88 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000fa8a ldr r3, [pc, 0x1cc]                                   |     r3 = *(0xfc5a);
    0x0000fa8c str r7, [r5]                                          |     *(r5) = r7;
    0x0000fa8e ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000fa90 ldr r0, [r3]                                          |     r0 = *(0xfc5a);
    0x0000fa92 blx 0x32ac                                            |     fcn_000032ac ();
    0x0000fa96 b 0xf812                                              |     goto label_13;
                                                                     | label_52:
    0x0000fa98 ldr r4, [pc, 0x1fc]                                   |     
    0x0000fa9a add r4, pc                                            |     r4 = 0x1f736;
    0x0000fa9c ldr r3, [r4]                                          |     r3 = *(0x1f736);
    0x0000fa9e cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000faa0 beq 0xfb74                                            |         goto label_65;
                                                                     |     }
                                                                     | label_22:
    0x0000faa2 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000faa4 bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000faa8 ldr r0, [r5]                                          |     r0 = *(r5);
    0x0000faaa movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000faac add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000faae blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000fab2 mov r8, r0                                            |     r8 = r0;
    0x0000fab4 ldr r4, [pc, 0x1e4]                                   |     
    0x0000fab6 add r4, pc                                            |     r4 = 0x1f756;
    0x0000fab8 ldr r6, [r4]                                          |     r6 = *(0x1f756);
    0x0000faba cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000fabc beq 0xfb8c                                            |         goto label_66;
                                                                     |     }
                                                                     | label_25:
    0x0000fabe cmp r6, 2                                             |     
                                                                     |     if (r6 != 2) {
    0x0000fac0 bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000fac4 ldr r7, [r5]                                          |     r7 = *(r5);
    0x0000fac6 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000faca mov r4, r0                                            |     r4 = r0;
    0x0000facc blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000fad0 ldr r2, [pc, 0x1cc]                                   |     
    0x0000fad2 mov r3, r4                                            |     r3 = r4;
    0x0000fad4 strd r0, r8, [sp]                                     |     __asm ("strd r0, r8, [sp]");
    0x0000fad8 add r2, pc                                            |     r2 = 0x1f77c;
    0x0000fada adds r2, 0x60                                         |     r2 += 0x60;
    0x0000fadc str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000fade ldr r2, [pc, 0x1c4]                                   |     
    0x0000fae0 add r2, pc                                            |     r2 = 0x1f78a;
    0x0000fae2 b 0xf892                                              |     goto label_12;
                                                                     | label_58:
    0x0000fae4 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fae8 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000faea b 0xf8d0                                              |     goto label_14;
                                                                     | label_53:
    0x0000faec ldr r4, [pc, 0x1b8]                                   |     
    0x0000faee add r4, pc                                            |     r4 = 0x1f79a;
    0x0000faf0 ldr r3, [r4]                                          |     r3 = *(0x1f79a);
    0x0000faf2 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000faf4 beq 0xfb9c                                            |         goto label_67;
                                                                     |     }
                                                                     | label_27:
    0x0000faf6 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000faf8 bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000fafc blx 0x349c                                            |     fcn_0000349c ();
    0x0000fb00 movs r2, 0xc8                                         |     r2 = 0xc8;
    0x0000fb02 mov r5, r0                                            |     r5 = r0;
    0x0000fb04 add r1, sp, 0x2c                                      |     r1 += var_2ch;
    0x0000fb06 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000fb08 blx 0x34b4                                            |     r0 = fcn_000034b4 ();
    0x0000fb0c mov r8, r0                                            |     r8 = r0;
    0x0000fb0e ldr r4, [pc, 0x19c]                                   |     
    0x0000fb10 add r4, pc                                            |     r4 = 0x1f7c2;
    0x0000fb12 ldr r6, [r4]                                          |     r6 = *(0x1f7c2);
    0x0000fb14 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000fb16 beq 0xfba8                                            |         goto label_68;
                                                                     |     }
                                                                     | label_28:
    0x0000fb18 cmp r6, 2                                             |     
                                                                     |     if (r6 != 2) {
    0x0000fb1a bne.w 0xf7f6                                          |         goto label_11;
                                                                     |     }
    0x0000fb1e ldr r7, [r5]                                          |     r7 = *(r5);
    0x0000fb20 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000fb24 mov r4, r0                                            |     r4 = r0;
    0x0000fb26 blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000fb2a ldr r2, [pc, 0x184]                                   |     
    0x0000fb2c mov r3, r4                                            |     r3 = r4;
    0x0000fb2e strd r0, r8, [sp]                                     |     __asm ("strd r0, r8, [sp]");
    0x0000fb32 add r2, pc                                            |     r2 = 0x1f7e8;
    0x0000fb34 adds r2, 0x60                                         |     r2 += 0x60;
    0x0000fb36 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000fb38 ldr r2, [pc, 0x178]                                   |     
    0x0000fb3a add r2, pc                                            |     r2 = 0x1f7f2;
    0x0000fb3c b 0xf892                                              |     goto label_12;
                                                                     | label_55:
    0x0000fb3e bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb42 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000fb44 b 0xf7f0                                              |     goto label_15;
    0x0000fb46 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb4a ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000fb4c b 0xf84e                                              |     goto label_16;
                                                                     | label_50:
    0x0000fb4e blx 0x32d4                                            |     fcn_000032d4 ();
    0x0000fb52 b 0xf774                                              |     goto label_17;
                                                                     | label_60:
    0x0000fb54 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb58 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000fb5a b 0xf954                                              |     goto label_18;
                                                                     | label_59:
    0x0000fb5c bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb60 ldr r7, [r6]                                          |     r7 = *(r6);
    0x0000fb62 b 0xf8f2                                              |     goto label_19;
                                                                     | label_62:
    0x0000fb64 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb68 ldr r5, [r7]                                          |     r5 = *(r7);
    0x0000fb6a b 0xf9bc                                              |     goto label_20;
                                                                     | label_63:
    0x0000fb6c bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb70 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000fb72 b 0xfa1e                                              |     goto label_21;
                                                                     | label_65:
    0x0000fb74 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb78 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000fb7a b 0xfaa2                                              |     goto label_22;
    0x0000fb7c bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb80 ldr r6, [r7]                                          |     r6 = *(r7);
    0x0000fb82 b 0xf870                                              |     goto label_23;
                                                                     | label_61:
    0x0000fb84 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb88 ldr r6, [r4]                                          |     r6 = *(r4);
    0x0000fb8a b 0xf978                                              |     goto label_24;
                                                                     | label_66:
    0x0000fb8c bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb90 ldr r6, [r4]                                          |     r6 = *(r4);
    0x0000fb92 b 0xfabe                                              |     goto label_25;
                                                                     | label_64:
    0x0000fb94 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fb98 ldr r6, [r4]                                          |     r6 = *(r4);
    0x0000fb9a b 0xfa42                                              |     goto label_26;
                                                                     | label_67:
    0x0000fb9c bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fba0 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0000fba2 b 0xfaf6                                              |     goto label_27;
    0x0000fba4 blx 0x334c                                            |     fcn_0000334c ();
                                                                     | label_68:
    0x0000fba8 bl 0x210ec                                            |     fcn_000210ec ();
    0x0000fbac ldr r6, [r4]                                          |     r6 = *(r4);
    0x0000fbae b 0xfb18                                              |     goto label_28;
                                                                     | label_57:
    0x0000fbb0 bl 0xecf8                                             |     r0 = fcn_0000ecf8 ();
    0x0000fbb4 cbnz r0, 0xfbca                                       |     
                                                                     |     while (r0 == 0) {
                                                                     | label_29:
    0x0000fbb6 ldr r3, [pc, 0x100]                                   |         
    0x0000fbb8 movs r2, 0xb3                                         |         r2 = 0xb3;
    0x0000fbba ldr r1, [pc, 0x100]                                   |         
    0x0000fbbc ldr r0, [pc, 0x100]                                   |         
    0x0000fbbe add r3, pc                                            |         r3 = 0x1f87c;
    0x0000fbc0 add r1, pc                                            |         r1 = 0x1f882;
    0x0000fbc2 adds r3, 0x7c                                         |         r3 += 0x7c;
    0x0000fbc4 add r0, pc                                            |         r0 = 0x1f888;
    0x0000fbc6 blx 0x36a8                                            |         fcn_000036a8 ();
    0x0000fbca blx 0x349c                                            |         fcn_0000349c ();
    0x0000fbce movs r2, 0xc8                                         |         r2 = 0xc8;
    0x0000fbd0 mov r5, r0                                            |         r5 = r0;
    0x0000fbd2 add r1, sp, 0x2c                                      |         r1 += var_2ch;
    0x0000fbd4 ldr r0, [r0]                                          |         r0 = *(r0);
    0x0000fbd6 blx 0x34b4                                            |         r0 = fcn_000034b4 ();
    0x0000fbda mov r7, r0                                            |         r7 = r0;
    0x0000fbdc bl 0xecf8                                             |         r0 = fcn_0000ecf8 ();
    0x0000fbe0 cmp r0, 0                                             |         
    0x0000fbe2 beq 0xfbb6                                            |         
                                                                     |     }
    0x0000fbe4 ldr r6, [r5]                                          |     r6 = *(r5);
    0x0000fbe6 blx 0x3454                                            |     r0 = fcn_00003454 ();
    0x0000fbea mov r4, r0                                            |     r4 = r0;
    0x0000fbec blx 0x32a0                                            |     fcn_000032a0 ();
    0x0000fbf0 ldr r1, [pc, 0xd0]                                    |     
    0x0000fbf2 mov r3, r4                                            |     r3 = r4;
    0x0000fbf4 ldr r2, [pc, 0xd0]                                    |     
    0x0000fbf6 add r4, sp, 0xf4                                      |     r4 += var_f4h;
    0x0000fbf8 str r0, [sp]                                          |     *(sp) = r0;
    0x0000fbfa mov r0, r4                                            |     r0 = r4;
    0x0000fbfc add r1, pc                                            |     r1 = 0x1f8c4;
    0x0000fbfe str r7, [sp, 4]                                       |     var_4h = r7;
    0x0000fc00 adds r1, 0x60                                         |     r1 += 0x60;
    0x0000fc02 add r2, pc                                            |     r2 = 0x1f8ce;
    0x0000fc04 str r1, [sp, 8]                                       |     var_8h = r1;
    0x0000fc06 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000fc0a bl 0x21d60                                            |     fcn_00021d60 (r0, r1);
    0x0000fc0e movs r3, 0                                            |     r3 = 0;
    0x0000fc10 mov r0, r4                                            |     r0 = r4;
    0x0000fc12 strb.w r3, [r4, 0x1ff]                                |     var_2f3h = r3;
    0x0000fc16 blx 0x346c                                            |     fcn_0000346c ();
    0x0000fc1a mov r1, r4                                            |     r1 = r4;
    0x0000fc1c mov r2, r0                                            |     r2 = r0;
    0x0000fc1e movs r0, 2                                            |     r0 = 2;
    0x0000fc20 bl 0x212e0                                            |     fcn_000212e0 (r0, r1, r2);
    0x0000fc24 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000fc26 ldr r3, [pc, 0x30]                                    |     r3 = *(0xfc5a);
    0x0000fc28 str r6, [r5]                                          |     *(r5) = r6;
    0x0000fc2a ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000fc2c ldr r0, [r3]                                          |     r0 = *(0xfc5a);
    0x0000fc2e blx 0x32ac                                            |     fcn_000032ac ();
    0x0000fc32 b 0xfbb6                                              |     goto label_29;
                                                                     |     if (r2 != 0) {
    0x0000fce4 cbz r2, 0xfcee                                        |         
    0x0000fce6 cmp r2, 1                                             |         
                                                                     |         if (r2 != 1) {
    0x0000fce8 bne 0xfcf2                                            |             goto label_69;
                                                                     |         }
    0x0000fcea b.w 0xf2dc                                            |         goto label_30;
                                                                     |     }
    0x0000fcee mov r2, r3                                            |     r2 = r3;
    0x0000fcf0 b 0xf660                                              |     goto label_31;
                                                                     | label_69:
    0x0000fcf2 push {r3, lr}                                         |     
    0x0000fcf4 movw r2, 0x133                                        |     r2 = 0x133;
    0x0000fcf8 ldr r3, [pc, 0x10]                                    |     
    0x0000fcfa ldr r1, [pc, 0x14]                                    |     
    0x0000fcfc ldr r0, [pc, 0x14]                                    |     
    0x0000fcfe add r3, pc                                            |     r3 = 0x1fa0e;
    0x0000fd00 adds r3, 0x98                                         |     r3 += 0x98;
    0x0000fd02 add r1, pc                                            |     r1 = 0x1fa18;
    0x0000fd04 add r0, pc                                            |     r0 = 0x1fa1c;
    0x0000fd06 blx 0x36a8                                            |     fcn_000036a8 ();
    0x0000fd0a nop                                                   |     
    0x0000fd0c ldrb r6, [r6, 0x18]                                   |     r6 = *((r6 + 0x18));
    0x0000fd0e movs r1, r0                                           |     r1 = r0;
    0x0000fd10 strb r2, [r1, 0x10]                                   |     *((r1 + 0x10)) = r2;
    0x0000fd12 movs r1, r0                                           |     r1 = r0;
    0x0000fd14 ldr r4, [r6, 0x1c]                                    |     r4 = *((r6 + 0x1c));
    0x0000fd16 movs r1, r0                                           |     r1 = r0;
                                                                     | }

[*] Function strcat used 1 times liblttng-ust-ctl.so.5.0.0