[*] Binary protection state of libpaho-mqttpp3.so.1.2.0

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


[*] Function system tear down of libpaho-mqttpp3.so.1.2.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/libpaho-mqttpp3.so.1.2.0 @ 0x174fc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000174fc ()                                      | void fcn_000174fc (int16_t arg_0h, int16_t arg1, int16_t arg2, void * arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     void * s1;
                                                                 |     int16_t var_14h;
                                                                 |     int32_t var_14h_2;
                                                                 |     int16_t var_1ch;
                                                                 |     int32_t var_4h_3;
                                                                 |     int32_t var_8h_3;
                                                                 |     int32_t var_ch_4;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch_2;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_ch_3;
                                                                 |     int16_t var_5ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000174fc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00017500 sub sp, 0x64                                      |     
    0x00017502 ldr.w r5, [pc, 0x440]                             |     
    0x00017506 lsr.w sl, r1, 0x1f                                |     sl = r1 >> 0x1f;
    0x0001750a mov r7, r3                                        |     r7 = r3;
    0x0001750c ldr.w r4, [pc, 0x438]                             |     r4 = *(0x17948);
    0x00017510 add r5, pc                                        |     r5 = 0x2ee5a;
    0x00017512 ldr.w fp, [pc, 0x438]                             |     fp = *(0x0001794c);
    0x00017516 ldr r4, [r5, r4]                                  |     
    0x00017518 mov r5, r0                                        |     r5 = r0;
    0x0001751a add fp, pc                                        |     
    0x0001751c ldr r4, [r4]                                      |     r4 = *(0x2ee5a);
    0x0001751e str r4, [sp, 0x5c]                                |     var_5ch = r4;
    0x00017520 mov.w r4, 0                                       |     r4 = 0;
    0x00017524 eor.w r4, r1, r1, asr 31                          |     r4 = r1 ^ (r1 >> 31);
    0x00017528 str r2, [sp, 0xc]                                 |     s1 = r2;
    0x0001752a sub.w r4, r4, r1, asr 31                          |     r4 -= (r1 >> 31);
    0x0001752e cmp r4, 9                                         |     
                                                                 |     if (r4 < 9) {
    0x00017530 bls.w 0x178aa                                     |         goto label_13;
                                                                 |     }
    0x00017534 cmp r4, 0x63                                      |     
                                                                 |     if (r4 < 0x63) {
    0x00017536 bls.w 0x178c6                                     |         goto label_14;
                                                                 |     }
    0x0001753a cmp.w r4, 0x3e8                                   |     
                                                                 |     if (r4 <= 0x3e8) {
    0x0001753e blo.w 0x178d6                                     |         goto label_15;
                                                                 |     }
    0x00017542 movw r3, 0x270f                                   |     r3 = 0x270f;
    0x00017546 cmp r4, r3                                        |     
                                                                 |     if (r4 < r3) {
    0x00017548 bls.w 0x178ce                                     |         goto label_16;
                                                                 |     }
    0x0001754c movw ip, 0x1759                                   |     
    0x00017550 movw r6, 0x869f                                   |     
    0x00017554 movw lr, 0x423f                                   |     
    0x00017558 movw r8, 0x9680                                   |     
    0x0001755c movw sb, 0xe0ff                                   |     
    0x00017560 movt ip, 0xd1b7                                   |     ip = 0xd1b71759;
    0x00017564 movt r6, 1                                        |     r6 = 0x1869f;
    0x00017568 movt lr, 0xf                                      |     lr = 0xf423f;
    0x0001756c movt r8, 0x98                                     |     r8 = 0x989680;
    0x00017570 movt sb, 0x5f5                                    |     sb = 0x5f5e0ff;
    0x00017574 mov r2, r4                                        |     r2 = r4;
    0x00017576 movs r1, 1                                        |     r1 = 1;
    0x00017578 b 0x1758c                                         |     
                                                                 |     while (r3 > r6) {
    0x0001757a cmp r3, lr                                        |         
                                                                 |         if (r3 < lr) {
    0x0001757c bls.w 0x176cc                                     |             goto label_17;
                                                                 |         }
    0x00017580 cmp r3, r8                                        |         
                                                                 |         if (r3 <= r8) {
    0x00017582 blo.w 0x1782a                                     |             goto label_18;
                                                                 |         }
    0x00017586 cmp r3, sb                                        |         
                                                                 |         if (r3 < sb) {
    0x00017588 bls.w 0x17832                                     |             goto label_19;
                                                                 |         }
    0x0001758c umull r3, r0, ip, r2                              |         r3:r0 = ip * r2;
    0x00017590 mov r3, r2                                        |         r3 = r2;
    0x00017592 cmp r3, r6                                        |         
    0x00017594 lsr.w r2, r0, 0xd                                 |         r2 = r0 >> 0xd;
    0x00017598 mov r0, r1                                        |         r0 = r1;
    0x0001759a add.w r1, r1, 4                                   |         r1 += 4;
    0x0001759e bhi 0x1757a                                       |         
                                                                 |     }
    0x000175a0 add.w sb, r0, 3                                   |     sb = r0 + 3;
                                                                 | label_4:
    0x000175a4 add.w r8, sp, 0x2c                                |     r8 += var_2ch;
    0x000175a8 add r1, sl                                        |     r1 += sl;
    0x000175aa add r6, sp, 0x34                                  |     r6 += var_34h;
    0x000175ac movs r2, 0x2d                                     |     r2 = 0x2d;
    0x000175ae mov r0, r8                                        |     r0 = r8;
    0x000175b0 str r6, [sp, 0x2c]                                |     var_2ch = r6;
    0x000175b2 blx 0xea00                                        |     fcn_0000ea00 ();
    0x000175b6 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000175b8 add.w lr, r3, sl                                  |     lr = r3 + sl;
                                                                 | label_0:
    0x000175bc ldr r3, [pc, 0x390]                               |     r3 = *(0x17950);
    0x000175be add.w r1, lr, sb                                  |     r1 = lr + sb;
    0x000175c2 movw sb, 0x851f                                   |     
    0x000175c6 movw sl, 0x270f                                   |     sl = 0x270f;
                                                                 |     /* if there is a right shift of 5, then it's a division by 1/100 */
    0x000175ca movt sb, 0x51eb                                   |     sb = 0x51eb851f;
    0x000175ce ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x000175d2 mov.w fp, 0x64                                    |     
                                                                 |     do {
    0x000175d6 umull r0, r2, sb, r4                              |         r0:r2 = sb * r4;
    0x000175da mov r0, r4                                        |         r0 = r4;
    0x000175dc cmp r0, sl                                        |         
    0x000175de sub.w r1, r1, 2                                   |         r1 -= 2;
    0x000175e2 lsr.w r2, r2, 5                                   |         r2 >>= 5;
    0x000175e6 mls ip, fp, r2, r4                                |         __asm ("mls ip, fp, r2, r4");
    0x000175ea mov r4, r2                                        |         r4 = r2;
    0x000175ec add.w r2, r3, ip, lsl 1                           |         r2 = r3 + (ip << 1);
    0x000175f0 ldrb.w ip, [r3, ip, lsl 1]                        |         offset_0 = ip << 1;
                                                                 |         ip = *((r3 + offset_0));
    0x000175f4 ldrb r2, [r2, 1]                                  |         r2 = *((r2 + 1));
    0x000175f6 strb.w ip, [r1, 1]                                |         *((r1 + 1)) = ip;
    0x000175fa strb r2, [r1, 2]                                  |         *((r1 + 2)) = r2;
    0x000175fc bhi 0x175d6                                       |         
                                                                 |     } while (r0 > sl);
    0x000175fe cmp.w r0, 0x3e8                                   |     
                                                                 |     if (r0 >= 0x3e8) {
    0x00017602 bhs 0x176f6                                       |         goto label_20;
                                                                 |     }
                                                                 | label_10:
    0x00017604 adds r4, 0x30                                     |     r4 += 0x30;
    0x00017606 uxtb r4, r4                                       |     r4 = (int8_t) r4;
                                                                 | label_1:
    0x00017608 movs r3, 0xc                                      |     r3 = 0xc;
    0x0001760a strb.w r4, [lr]                                   |     *(lr) = r4;
    0x0001760e str r3, [sp]                                      |     *(sp) = r3;
    0x00017610 movs r2, 0                                        |     r2 = 0;
    0x00017612 ldr r3, [pc, 0x340]                               |     
    0x00017614 mov r1, r2                                        |     r1 = r2;
    0x00017616 mov r0, r8                                        |     r0 = r8;
    0x00017618 add r3, pc                                        |     r3 = 0x2ef72;
    0x0001761a blx 0xe710                                        |     r0 = fcn_0000e710 ();
    0x0001761e mov lr, r0                                        |     lr = r0;
    0x00017620 add r4, sp, 0x4c                                  |     r4 += var_4ch;
    0x00017622 str r4, [sp, 0x44]                                |     var_44h = r4;
    0x00017624 mov ip, r0                                        |     
    0x00017626 ldr r3, [lr], 8                                   |     r3 = *(lr);
                                                                 |     lr += 8;
    0x0001762a cmp r3, lr                                        |     
                                                                 |     if (r3 == lr) {
    0x0001762c beq.w 0x17868                                     |         goto label_21;
                                                                 |     }
    0x00017630 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00017632 ldr r3, [r0, 8]                                   |     r3 = var_34h;
    0x00017634 str r3, [sp, 0x4c]                                |     var_4ch = r3;
                                                                 | label_7:
    0x00017636 ldr.w r3, [ip, 4]                                 |     r3 = var_30h;
    0x0001763a str r3, [sp, 0x48]                                |     var_48h = r3;
    0x0001763c movs r3, 0                                        |     r3 = 0;
    0x0001763e str.w r3, [ip, 4]                                 |     __asm ("str.w r3, [var_30h]");
    0x00017642 strb.w r3, [ip, 8]                                |     var_34h = r3;
    0x00017646 mvn r3, 0xc0000000                                |     r3 = ~0xc0000000;
    0x0001764a ldr r2, [sp, 0x48]                                |     r2 = var_48h;
    0x0001764c str.w lr, [ip]                                    |     __asm ("str.w lr, [ip]");
    0x00017650 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x00017652 beq.w 0x178de                                     |         goto label_22;
                                                                 |     }
    0x00017656 ldr r1, [pc, 0x300]                               |     
    0x00017658 movs r2, 1                                        |     r2 = 1;
    0x0001765a add r0, sp, 0x44                                  |     r0 += var_44h;
    0x0001765c add r1, pc                                        |     r1 = 0x2efba;
    0x0001765e blx 0xe9c8                                        |     r0 = fcn_0000e9c8 ();
    0x00017662 mov r3, r0                                        |     r3 = r0;
    0x00017664 add.w sb, r5, 8                                   |     sb = r5 + 8;
    0x00017668 str.w sb, [r5]                                    |     __asm ("str.w sb, [r5]");
    0x0001766c ldr r2, [r3], 8                                   |     r2 = *(r3);
                                                                 |     r3 += 8;
    0x00017670 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x00017672 beq.w 0x1784a                                     |         goto label_23;
                                                                 |     }
    0x00017676 str r2, [r5]                                      |     *(r5) = r2;
    0x00017678 ldr r2, [r0, 8]                                   |     r2 = var_4ch;
    0x0001767a str r2, [r5, 8]                                   |     *((r5 + 8)) = r2;
                                                                 | label_6:
    0x0001767c str r3, [r0]                                      |     *(r0) = r3;
    0x0001767e ldr r3, [r0, 4]                                   |     r3 = var_48h;
    0x00017680 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00017682 movs r3, 0                                        |     r3 = 0;
    0x00017684 strb r3, [r0, 8]                                  |     var_4ch = r3;
    0x00017686 str r3, [r0, 4]                                   |     var_48h = r3;
    0x00017688 ldr r0, [sp, 0x44]                                |     r0 = var_44h;
    0x0001768a cmp r0, r4                                        |     
                                                                 |     if (r0 != r4) {
    0x0001768c beq 0x17692                                       |         
    0x0001768e blx 0xe9a4                                        |         fcn_0000e9a4 ();
                                                                 |     }
    0x00017692 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x00017694 cmp r0, r6                                        |     
                                                                 |     if (r0 != r6) {
    0x00017696 beq 0x1769c                                       |         
    0x00017698 blx 0xe9a4                                        |         fcn_0000e9a4 ();
                                                                 |     }
    0x0001769c ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0001769e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000176a0 bne.w 0x177ce                                     |         goto label_24;
                                                                 |     }
                                                                 | label_3:
    0x000176a4 ldr r3, [sp, 0xc]                                 |     r3 = s1;
    0x000176a6 cmp r3, 0xff                                      |     
    0x000176a8 it ne                                             |     
                                                                 |     if (r3 != 0xff) {
    0x000176aa cmpne r3, 0                                       |         __asm ("cmpne r3, 0");
                                                                 |     }
                                                                 |     if (r3 != 0xff) {
    0x000176ac bne 0x17706                                       |         goto label_25;
                                                                 |     }
                                                                 | label_2:
    0x000176ae ldr r2, [pc, 0x2ac]                               |     
    0x000176b0 ldr r3, [pc, 0x294]                               |     r3 = *(0x17948);
    0x000176b2 add r2, pc                                        |     r2 = 0x2f014;
    0x000176b4 ldr r3, [r2, r3]                                  |     r3 = *(0x2f014);
    0x000176b6 ldr r2, [r3]                                      |     r2 = *(0x2f014);
    0x000176b8 ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x000176ba eors r2, r3                                       |     r2 ^= r3;
    0x000176bc mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000176c0 bne.w 0x178e6                                     |         goto label_26;
                                                                 |     }
    0x000176c4 mov r0, r5                                        |     r0 = r5;
    0x000176c6 add sp, 0x64                                      |     
    0x000176c8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_17:
    0x000176cc adds r0, 5                                        |     r0 += 5;
    0x000176ce mov sb, r1                                        |     sb = r1;
                                                                 | label_11:
    0x000176d0 add.w r8, sp, 0x2c                                |     r8 += var_2ch;
    0x000176d4 add.w r1, sl, r0                                  |     r1 = sl + r0;
    0x000176d8 add r6, sp, 0x34                                  |     r6 += var_34h;
    0x000176da movs r2, 0x2d                                     |     r2 = 0x2d;
    0x000176dc mov r0, r8                                        |     r0 = r8;
    0x000176de str r6, [sp, 0x2c]                                |     var_2ch = r6;
    0x000176e0 blx 0xea00                                        |     fcn_0000ea00 ();
    0x000176e4 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000176e6 cmp r4, 0x63                                      |     
    0x000176e8 add.w lr, r3, sl                                  |     lr = r3 + sl;
                                                                 |     if (r4 > 0x63) {
    0x000176ec bhi.w 0x175bc                                     |         goto label_0;
                                                                 |     }
    0x000176f0 ldr r3, [pc, 0x25c]                               |     r3 = *(0x17950);
    0x000176f2 ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
                                                                 | label_20:
    0x000176f6 add.w r2, r3, r4, lsl 1                           |     r2 = r3 + (r4 << 1);
    0x000176fa ldrb.w r4, [r3, r4, lsl 1]                        |     offset_1 = r4 << 1;
                                                                 |     r4 = *((r3 + offset_1));
    0x000176fe ldrb r3, [r2, 1]                                  |     r3 = *((r2 + 1));
    0x00017700 strb.w r3, [lr, 1]                                |     *((lr + 1)) = r3;
    0x00017704 b 0x17608                                         |     goto label_1;
                                                                 | label_25:
    0x00017706 ldr r1, [pc, 0x258]                               |     
    0x00017708 add.w sl, sp, 0x14                                |     sl += var_14h;
    0x0001770c add r7, sp, 0x1c                                  |     r7 += var_1ch;
    0x0001770e mov r0, sl                                        |     r0 = sl;
    0x00017710 str r7, [sp, 0x14]                                |     var_14h = r7;
    0x00017712 add r1, pc                                        |     r1 = 0x2f078;
    0x00017714 add.w r2, r1, 0xa                                 |     r2 = r1 + 0xa;
    0x00017718 bl 0xf650                                         |     fcn_0000f650 (r0, r1, r2);
    0x0001771c ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x0001771e blx 0xe924                                        |     r0 = memmove (r0, r1, r2);
    0x00017722 mov fp, r0                                        |     
    0x00017724 str r6, [sp, 0x2c]                                |     var_2ch = r6;
                                                                 |     if (r0 != 0) {
    0x00017726 cbz r0, 0x1773e                                   |         
    0x00017728 blx 0xec10                                        |         fcn_0000ec10 ();
    0x0001772c mov r1, fp                                        |         r1 = fp;
    0x0001772e add.w r2, fp, r0                                  |         r2 = fp + r0;
    0x00017732 mov r0, r8                                        |         r0 = r8;
    0x00017734 bl 0xf650                                         |         fcn_0000f650 (r0, r1, r2);
    0x00017738 ldrd r1, r2, [sp, 0x2c]                           |         __asm ("ldrd r1, r2, [var_2ch]");
    0x0001773c b 0x1774a                                         |         
                                                                 |     } else {
    0x0001773e add r6, sp, 0x34                                  |         r6 += var_34h;
    0x00017740 mov r2, r0                                        |         r2 = r0;
    0x00017742 mov r1, r6                                        |         r1 = r6;
    0x00017744 str r0, [sp, 0x30]                                |         var_30h = r0;
    0x00017746 strb.w r0, [sp, 0x34]                             |         var_34h = r0;
                                                                 |     }
    0x0001774a ldrd r3, ip, [sp, 0x14]                           |     __asm ("ldrd r3, ip, [var_14h]");
    0x0001774e cmp r3, r7                                        |     
    0x00017750 add.w r0, r2, ip                                  |     r0 = r2 + ip;
    0x00017754 ite ne                                            |     
                                                                 |     if (r3 == r7) {
    0x00017756 ldrne lr, [sp, 0x1c]                              |         lr = var_1ch;
                                                                 |     }
                                                                 |     if (r3 == r7) {
    0x0001775a mov.w lr, 0xf                                     |         lr = 0xf;
                                                                 |     }
    0x0001775e cmp r0, lr                                        |     
                                                                 |     if (r0 >= lr) {
    0x00017760 bls 0x17772                                       |         
    0x00017762 cmp r1, r6                                        |         
    0x00017764 ite ne                                            |         
                                                                 |         if (r1 == r6) {
    0x00017766 ldrne lr, [sp, 0x34]                              |             lr = var_34h;
                                                                 |         }
                                                                 |         if (r1 == r6) {
    0x0001776a mov.w lr, 0xf                                     |             lr = 0xf;
                                                                 |         }
    0x0001776e cmp r0, lr                                        |         
                                                                 |         if (r0 < lr) {
    0x00017770 bls 0x1783a                                       |             goto label_27;
                                                                 |         }
                                                                 |     }
    0x00017772 mov r0, sl                                        |     r0 = sl;
    0x00017774 blx 0xe9c8                                        |     r0 = fcn_0000e9c8 ();
                                                                 | label_5:
    0x00017778 mov lr, r0                                        |     lr = r0;
    0x0001777a str r4, [sp, 0x44]                                |     var_44h = r4;
    0x0001777c ldr r3, [lr], 8                                   |     r3 = *(lr);
                                                                 |     lr += 8;
    0x00017780 mov ip, r0                                        |     
    0x00017782 cmp r3, lr                                        |     
                                                                 |     if (r3 == lr) {
    0x00017784 beq.w 0x17894                                     |         goto label_28;
                                                                 |     }
    0x00017788 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x0001778a ldr r3, [r0, 8]                                   |     r3 = var_1ch;
    0x0001778c str r3, [sp, 0x4c]                                |     var_4ch = r3;
                                                                 | label_9:
    0x0001778e ldr.w r3, [ip, 4]                                 |     r3 = var_14h_2;
    0x00017792 mov r0, r5                                        |     r0 = r5;
    0x00017794 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x00017796 movs r3, 0                                        |     r3 = 0;
    0x00017798 str.w lr, [ip]                                    |     __asm ("str.w lr, [ip]");
    0x0001779c str.w r3, [ip, 4]                                 |     __asm ("str.w r3, [var_14h_2]");
    0x000177a0 strb.w r3, [ip, 8]                                |     var_1ch = r3;
    0x000177a4 ldrd r1, r2, [sp, 0x44]                           |     __asm ("ldrd r1, r2, [var_44h]");
    0x000177a8 blx 0xe9c8                                        |     fcn_0000e9c8 ();
    0x000177ac ldr r0, [sp, 0x44]                                |     r0 = var_44h;
    0x000177ae cmp r0, r4                                        |     
                                                                 |     if (r0 != r4) {
    0x000177b0 beq 0x177b6                                       |         
    0x000177b2 blx 0xe9a4                                        |         fcn_0000e9a4 ();
                                                                 |     }
    0x000177b6 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x000177b8 cmp r0, r6                                        |     
                                                                 |     if (r0 != r6) {
    0x000177ba beq 0x177c0                                       |         
    0x000177bc blx 0xe9a4                                        |         fcn_0000e9a4 ();
                                                                 |     }
    0x000177c0 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x000177c2 cmp r0, r7                                        |     
                                                                 |     if (r0 == r7) {
    0x000177c4 beq.w 0x176ae                                     |         goto label_2;
                                                                 |     }
    0x000177c8 blx 0xe9a4                                        |     fcn_0000e9a4 ();
    0x000177cc b 0x176ae                                         |     goto label_2;
                                                                 | label_24:
    0x000177ce ldr r1, [pc, 0x194]                               |     
    0x000177d0 mov r0, r8                                        |     r0 = r8;
    0x000177d2 str r6, [sp, 0x2c]                                |     var_2ch = r6;
    0x000177d4 add r1, pc                                        |     r1 = 0x2f13e;
    0x000177d6 adds r2, r1, 2                                    |     r2 = r1 + 2;
    0x000177d8 bl 0xf650                                         |     fcn_0000f650 (r0, r1, r2);
    0x000177dc ldrd r1, r2, [r7]                                 |     __asm ("ldrd r1, r2, [r7]");
    0x000177e0 mov r0, r8                                        |     r0 = r8;
    0x000177e2 blx 0xe9c8                                        |     r0 = fcn_0000e9c8 ();
    0x000177e6 mov ip, r0                                        |     
    0x000177e8 str r4, [sp, 0x44]                                |     var_44h = r4;
    0x000177ea ldr r3, [ip], 8                                   |     r3 = *(ip);
                                                                 |     ip += 8;
    0x000177ee mov r7, r0                                        |     r7 = r0;
    0x000177f0 cmp r3, ip                                        |     
                                                                 |     if (r3 == ip) {
    0x000177f2 beq 0x1787e                                       |         goto label_29;
                                                                 |     }
    0x000177f4 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x000177f6 ldr r3, [r0, 8]                                   |     r3 = var_34h;
    0x000177f8 str r3, [sp, 0x4c]                                |     var_4ch = r3;
                                                                 | label_8:
    0x000177fa ldr r3, [r7, 4]                                   |     r3 = var_30h;
    0x000177fc mov r0, r5                                        |     r0 = r5;
    0x000177fe str r3, [sp, 0x48]                                |     var_48h = r3;
    0x00017800 movs r3, 0                                        |     r3 = 0;
    0x00017802 str.w ip, [r7]                                    |     __asm ("str.w ip, [r7]");
    0x00017806 strb r3, [r7, 8]                                  |     var_34h = r3;
    0x00017808 str r3, [r7, 4]                                   |     var_30h = r3;
    0x0001780a ldrd r1, r2, [sp, 0x44]                           |     __asm ("ldrd r1, r2, [var_44h]");
    0x0001780e blx 0xe9c8                                        |     fcn_0000e9c8 ();
    0x00017812 ldr r0, [sp, 0x44]                                |     r0 = var_44h;
    0x00017814 cmp r0, r4                                        |     
                                                                 |     if (r0 != r4) {
    0x00017816 beq 0x1781c                                       |         
    0x00017818 blx 0xe9a4                                        |         fcn_0000e9a4 ();
                                                                 |     }
    0x0001781c ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0001781e cmp r0, r6                                        |     
                                                                 |     if (r0 == r6) {
    0x00017820 beq.w 0x176a4                                     |         goto label_3;
                                                                 |     }
    0x00017824 blx 0xe9a4                                        |     fcn_0000e9a4 ();
    0x00017828 b 0x176a4                                         |     goto label_3;
                                                                 | label_18:
    0x0001782a adds r1, r0, 6                                    |     r1 = r0 + 6;
    0x0001782c add.w sb, r0, 5                                   |     sb = r0 + 5;
    0x00017830 b 0x175a4                                         |     goto label_4;
                                                                 | label_19:
    0x00017832 adds r1, r0, 7                                    |     r1 = r0 + 7;
    0x00017834 add.w sb, r0, 6                                   |     sb = r0 + 6;
    0x00017838 b 0x175a4                                         |     goto label_4;
                                                                 | label_27:
    0x0001783a movs r2, 0                                        |     r2 = 0;
    0x0001783c mov r0, r8                                        |     r0 = r8;
    0x0001783e mov r1, r2                                        |     r1 = r2;
    0x00017840 str.w ip, [sp]                                    |     __asm ("str.w ip, [sp]");
    0x00017844 blx 0xe710                                        |     fcn_0000e710 ();
    0x00017848 b 0x17778                                         |     goto label_5;
                                                                 | label_23:
    0x0001784a ldr.w lr, [r0, 8]                                 |     lr = var_4ch;
    0x0001784e ldr.w ip, [r3, 4]                                 |     ip = var_4h_2;
    0x00017852 ldr r1, [r3, 8]                                   |     r1 = var_8h_2;
    0x00017854 ldr r2, [r3, 0xc]                                 |     r2 = var_ch_3;
    0x00017856 str.w lr, [r5, 8]                                 |     __asm ("str.w lr, [r5, 8]");
    0x0001785a str.w ip, [sb, 4]                                 |     __asm ("str.w ip, [sb, 4]");
    0x0001785e str.w r1, [sb, 8]                                 |     __asm ("str.w r1, [sb, 8]");
    0x00017862 str.w r2, [sb, 0xc]                               |     __asm ("str.w r2, [sb, 0xc]");
    0x00017866 b 0x1767c                                         |     goto label_6;
                                                                 | label_21:
    0x00017868 ldr r0, [r0, 8]                                   |     r0 = var_34h;
    0x0001786a mov sb, r4                                        |     sb = r4;
    0x0001786c ldr.w r1, [lr, 4]                                 |     r1 = var_4h;
    0x00017870 ldr.w r2, [lr, 8]                                 |     r2 = var_8h;
    0x00017874 ldr.w r3, [lr, 0xc]                               |     r3 = var_ch_2;
    0x00017878 stm.w sb!, {r0, r1, r2, r3}                       |     *(sb!) = r0;
                                                                 |     *((sb! + 4)) = r1;
                                                                 |     *((sb! + 8)) = r2;
                                                                 |     *((sb! + 12)) = r3;
    0x0001787c b 0x17636                                         |     goto label_7;
                                                                 | label_29:
    0x0001787e ldr r0, [r0, 8]                                   |     r0 = var_34h;
    0x00017880 mov lr, r4                                        |     lr = r4;
    0x00017882 ldr.w r1, [ip, 4]                                 |     r1 = var_4h;
    0x00017886 ldr.w r2, [ip, 8]                                 |     r2 = var_8h;
    0x0001788a ldr.w r3, [ip, 0xc]                               |     r3 = var_ch_2;
    0x0001788e stm.w lr!, {r0, r1, r2, r3}                       |     *(lr!) = r0;
                                                                 |     *((lr! + 4)) = r1;
                                                                 |     *((lr! + 8)) = r2;
                                                                 |     *((lr! + 12)) = r3;
    0x00017892 b 0x177fa                                         |     goto label_8;
                                                                 | label_28:
    0x00017894 ldr r0, [r0, 8]                                   |     r0 = var_1ch;
    0x00017896 mov r8, r4                                        |     r8 = r4;
    0x00017898 ldr.w r1, [lr, 4]                                 |     r1 = var_4h_3;
    0x0001789c ldr.w r2, [lr, 8]                                 |     r2 = var_8h_3;
    0x000178a0 ldr.w r3, [lr, 0xc]                               |     r3 = var_ch_4;
    0x000178a4 stm.w r8!, {r0, r1, r2, r3}                       |     *(r8!) = r0;
                                                                 |     *((r8! + 4)) = r1;
                                                                 |     *((r8! + 8)) = r2;
                                                                 |     *((r8! + 12)) = r3;
    0x000178a8 b 0x1778e                                         |     goto label_9;
                                                                 | label_13:
    0x000178aa add.w r8, sp, 0x2c                                |     r8 += var_2ch;
    0x000178ae add r6, sp, 0x34                                  |     r6 += var_34h;
    0x000178b0 movs r2, 0x2d                                     |     r2 = 0x2d;
    0x000178b2 add.w r1, sl, 1                                   |     r1 = sl + 1;
    0x000178b6 mov r0, r8                                        |     r0 = r8;
    0x000178b8 str r6, [sp, 0x2c]                                |     var_2ch = r6;
    0x000178ba blx 0xea00                                        |     fcn_0000ea00 ();
    0x000178be ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000178c0 add.w lr, r3, sl                                  |     lr = r3 + sl;
    0x000178c4 b 0x17604                                         |     goto label_10;
                                                                 | label_14:
    0x000178c6 movs r0, 2                                        |     r0 = 2;
    0x000178c8 mov.w sb, 1                                       |     sb = 1;
    0x000178cc b 0x176d0                                         |     goto label_11;
                                                                 | label_16:
    0x000178ce mov.w sb, 3                                       |     sb = 3;
    0x000178d2 movs r1, 4                                        |     r1 = 4;
    0x000178d4 b 0x175a4                                         |     goto label_4;
                                                                 | label_15:
    0x000178d6 mov.w sb, 2                                       |     sb = 2;
    0x000178da movs r1, 3                                        |     r1 = 3;
    0x000178dc b 0x175a4                                         |     goto label_4;
                                                                 | label_22:
    0x000178de ldr r0, [pc, 0x88]                                |     
    0x000178e0 add r0, pc                                        |     r0 = 0x2f24e;
    0x000178e2 blx 0xe7ac                                        |     fcn_0000e7ac ();
                                                                 | label_26:
    0x000178e6 blx 0xea48                                        |     fcn_0000ea48 ();
                                                                 |     do {
                                                                 | label_12:
    0x000178ea ldr r0, [sp, 0x2c]                                |         r0 = var_2ch;
    0x000178ec cmp r0, r6                                        |         
                                                                 |         if (r0 != r6) {
    0x000178ee beq 0x178f4                                       |             
    0x000178f0 blx 0xe9a4                                        |             fcn_0000e9a4 ();
                                                                 |         }
    0x000178f4 blx 0xea54                                        |         fcn_0000ea54 ();
    0x000178f8 ldr r0, [sp, 0x44]                                |         r0 = var_44h;
    0x000178fa cmp r0, r4                                        |         
    0x000178fc beq 0x178ea                                       |         
                                                                 |     } while (r0 == r4);
    0x000178fe blx 0xe9a4                                        |     fcn_0000e9a4 ();
    0x00017902 b 0x178ea                                         |     goto label_12;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x17aa8 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00017aa8 ()                              | void fcn_00017aa8 (int16_t arg1, int16_t arg2) {
                                                         |     int16_t var_4h;
                                                         |     int16_t var_8h;
                                                         |     int16_t var_ch;
                                                         |     int16_t var_1ch;
                                                         |     int16_t var_24h;
                                                         |     int16_t var_34h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x00017aa8 ldr r2, [pc, 0xdc]                        |     
    0x00017aaa ldr r3, [pc, 0xe0]                        |     r3 = *(0x17b8e);
    0x00017aac push.w {r4, r5, r6, r7, r8, lr}           |     
    0x00017ab0 mov r4, r0                                |     r4 = r0;
    0x00017ab2 add r2, pc                                |     r2 = 0x2f63e;
    0x00017ab4 ldr r7, [pc, 0xd8]                        |     
    0x00017ab6 sub sp, 0x38                              |     
    0x00017ab8 mov r0, r1                                |     r0 = r1;
    0x00017aba ldr r3, [r2, r3]                          |     
    0x00017abc mov r5, r1                                |     r5 = r1;
    0x00017abe add r7, pc                                |     r7 = 0x2f652;
    0x00017ac0 add.w r8, sp, 0xc                         |     r8 += var_ch;
    0x00017ac4 ldr r3, [r3]                              |     r3 = *(0x2f63e);
    0x00017ac6 str r3, [sp, 0x34]                        |     var_34h = r3;
    0x00017ac8 mov.w r3, 0                               |     r3 = 0;
    0x00017acc blx 0xea78                                |     r0 = fcn_0000ea78 ();
    0x00017ad0 mov r6, r0                                |     r6 = r0;
    0x00017ad2 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00017ad4 beq 0x17b54                               |         goto label_1;
                                                         |     }
    0x00017ad6 str.w r8, [sp, 4]                         |     __asm ("str.w r8, [var_4h]");
    0x00017ada blx 0xec10                                |     fcn_0000ec10 ();
    0x00017ade mov r1, r6                                |     r1 = r6;
    0x00017ae0 adds r2, r6, r0                           |     r2 = r6 + r0;
    0x00017ae2 add r6, sp, 4                             |     r6 += var_4h;
    0x00017ae4 mov r0, r6                                |     r0 = r6;
    0x00017ae6 bl 0xf650                                 |     fcn_0000f650 (r0, r1, r2);
                                                         |     do {
    0x00017aea mov r3, r6                                |         r3 = r6;
    0x00017aec add r6, sp, 0x1c                          |         r6 += var_1ch;
    0x00017aee movs r2, 0                                |         r2 = 0;
    0x00017af0 mov r1, r5                                |         r1 = r5;
    0x00017af2 mov r0, r6                                |         r0 = r6;
    0x00017af4 bl 0x174fc                                |         fcn_000174fc (r0, r1, r2, r3, r4);
    0x00017af8 mov r1, r6                                |         r1 = r6;
    0x00017afa mov r0, r4                                |         r0 = r4;
    0x00017afc blx 0xeb0c                                |         fcn_0000eb0c ();
    0x00017b00 ldr r0, [sp, 0x1c]                        |         r0 = var_1ch;
    0x00017b02 add r3, sp, 0x24                          |         r3 += var_24h;
    0x00017b04 cmp r0, r3                                |         
                                                         |         if (r0 != r3) {
    0x00017b06 beq 0x17b0c                               |             
    0x00017b08 blx 0xe9a4                                |             fcn_0000e9a4 ();
                                                         |         }
    0x00017b0c ldr r3, [pc, 0x84]                        |         r3 = *(0x17b94);
    0x00017b0e movs r2, 0                                |         r2 = 0;
    0x00017b10 ldr r1, [sp, 4]                           |         r1 = var_4h;
    0x00017b12 add.w r0, r4, 0x10                        |         r0 = r4 + 0x10;
    0x00017b16 ldr r3, [r7, r3]                          |         r3 = *((r7 + r3));
    0x00017b18 strd r5, r2, [r4, 8]                      |         __asm ("strd r5, r2, [r4, 8]");
    0x00017b1c ldr r2, [sp, 8]                           |         r2 = var_8h;
    0x00017b1e adds r3, 8                                |         r3 += 8;
    0x00017b20 str r3, [r4]                              |         *(r4) = r3;
    0x00017b22 add.w r3, r4, 0x18                        |         r3 = r4 + 0x18;
    0x00017b26 add r2, r1                                |         r2 += r1;
    0x00017b28 str r3, [r4, 0x10]                        |         *((r4 + 0x10)) = r3;
    0x00017b2a bl 0xf5b8                                 |         fcn_0000f5b8 (r0, r1, r2);
    0x00017b2e ldr r0, [sp, 4]                           |         r0 = var_4h;
    0x00017b30 cmp r0, r8                                |         
                                                         |         if (r0 != r8) {
    0x00017b32 beq 0x17b38                               |             
    0x00017b34 blx 0xe9a4                                |             fcn_0000e9a4 ();
                                                         |         }
    0x00017b38 ldr r2, [pc, 0x5c]                        |         
    0x00017b3a ldr r3, [pc, 0x50]                        |         r3 = *(0x17b8e);
    0x00017b3c add r2, pc                                |         r2 = 0x2f6d8;
    0x00017b3e ldr r3, [r2, r3]                          |         r3 = *(0x2f6d8);
    0x00017b40 ldr r2, [r3]                              |         r2 = *(0x2f6d8);
    0x00017b42 ldr r3, [sp, 0x34]                        |         r3 = var_34h;
    0x00017b44 eors r2, r3                               |         r2 ^= r3;
    0x00017b46 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00017b4a bne 0x17b60                               |             goto label_2;
                                                         |         }
    0x00017b4c mov r0, r4                                |         r0 = r4;
    0x00017b4e add sp, 0x38                              |         
    0x00017b50 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_1:
    0x00017b54 add r6, sp, 4                             |         r6 += var_4h;
    0x00017b56 strd r8, r0, [sp, 4]                      |         __asm ("strd r8, r0, [var_4h]");
    0x00017b5a strb.w r0, [sp, 0xc]                      |         var_ch = r0;
    0x00017b5e b 0x17aea                                 |         
                                                         |     } while (1);
                                                         | label_2:
    0x00017b60 blx 0xea48                                |     fcn_0000ea48 ();
    0x00017b64 mov r0, r4                                |     r0 = r4;
    0x00017b66 blx 0xea3c                                |     fcn_0000ea3c ();
                                                         |     do {
                                                         | label_0:
    0x00017b6a ldr r0, [sp, 4]                           |         r0 = var_4h;
    0x00017b6c cmp r0, r8                                |         
                                                         |         if (r0 != r8) {
    0x00017b6e beq 0x17b74                               |             
    0x00017b70 blx 0xe9a4                                |             fcn_0000e9a4 ();
                                                         |         }
    0x00017b74 blx 0xea54                                |         fcn_0000ea54 ();
    0x00017b78 ldr r0, [sp, 0x1c]                        |         r0 = var_1ch;
    0x00017b7a add r3, sp, 0x24                          |         r3 += var_24h;
    0x00017b7c cmp r0, r3                                |         
    0x00017b7e beq 0x17b6a                               |         
                                                         |     } while (r0 == r3);
    0x00017b80 blx 0xe9a4                                |     fcn_0000e9a4 ();
    0x00017b84 b 0x17b6a                                 |     goto label_0;
                                                         | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x18704).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x18fb0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00018fb0 ()              | void fcn_00018fb0 (int16_t arg1) {
                                         |     r0 = arg1;
    0x00018fb0 bmi 0x32bbe4              |     
    0x00018fb4 add r3, pc                |     r3 += pc;
    0x00018fb6 ldr r3, [r3, r2]          |     r3 = *((r3 + r2));
    0x00018fb8 ldrb r3, [r3]             |     r3 = *(r3);
                                         |     if (r3 != 0) {
    0x00018fba cbz r3, 0x18fc4           |         
    0x00018fbc ldr r3, [r0, 4]           |         r3 = *((r0 + 4));
    0x00018fbe adds r3, 1                |         r3++;
    0x00018fc0 str r3, [r0, 4]           |         *((r0 + 4)) = r3;
    0x00018fc2 bx lr                     |         return;
                                         |     }
    0x00018fc4 adds r0, 4                |     r0 += 4;
    0x00018fc6 dmb ish                   |     __asm ("dmb ish");
                                         |     do {
    0x00018fca ldrex r3, [r0]            |         __asm ("ldrex r3, [r0]");
    0x00018fce adds r3, 1                |         r3++;
    0x00018fd0 strex r2, r3, [r0]        |         __asm ("strex r2, r3, [r0]");
    0x00018fd4 cmp r2, 0                 |         
    0x00018fd6 bne 0x18fca               |         
                                         |     } while (r2 != 0);
    0x00018fd8 dmb ish                   |     __asm ("dmb ish");
    0x00018fdc bx lr                     |     return;
                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1b680 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0001b680 ()                      | void fcn_0001b680 (int16_t arg1) {
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_10h;
                                                 |     int16_t var_12h;
                                                 |     int16_t var_13h;
                                                 |     int16_t var_1ch;
                                                 |     int16_t var_24h;
                                                 |     int16_t var_34h;
                                                 |     r0 = arg1;
    0x0001b680 push {r4, r5, r6, r7, lr}         |     
    0x0001b682 mov r4, r0                        |     r4 = r0;
    0x0001b684 ldr r0, [pc, 0xd0]                |     
    0x0001b686 sub sp, 0x3c                      |     
    0x0001b688 add r7, sp, 0x1c                  |     r7 += var_1ch;
    0x0001b68a movs r2, 0                        |     r2 = 0;
    0x0001b68c ldr r1, [pc, 0xcc]                |     r1 = *(0x1b75c);
    0x0001b68e add r6, sp, 0xc                   |     r6 += var_ch;
    0x0001b690 add r0, pc                        |     r0 = 0x36dec;
    0x0001b692 ldr r3, [pc, 0xcc]                |     
    0x0001b694 ldr r5, [pc, 0xcc]                |     
    0x0001b696 ldr r1, [r0, r1]                  |     
    0x0001b698 add r3, pc                        |     r3 = 0x36dfe;
    0x0001b69a add r5, pc                        |     r5 = 0x36e02;
    0x0001b69c ldr r1, [r1]                      |     r1 = *(0x36dec);
    0x0001b69e str r1, [sp, 0x34]                |     var_34h = r1;
    0x0001b6a0 mov.w r1, 0                       |     r1 = 0;
    0x0001b6a4 ldm.w r3, {r0, r1}                |     r0 = *(r3);
                                                 |     r1 = *((r3 + 4));
    0x0001b6a8 movs r3, 7                        |     r3 = 7;
    0x0001b6aa str r6, [sp, 4]                   |     var_4h = r6;
    0x0001b6ac str r3, [sp, 8]                   |     var_8h = r3;
    0x0001b6ae add r3, sp, 4                     |     r3 += var_4h;
    0x0001b6b0 strh.w r1, [sp, 0x10]             |     var_10h = r1;
    0x0001b6b4 lsrs r1, r1, 0x10                 |     r1 >>= 0x10;
    0x0001b6b6 str r0, [sp, 0xc]                 |     var_ch = r0;
    0x0001b6b8 mov r0, r7                        |     r0 = r7;
    0x0001b6ba strb.w r2, [sp, 0x13]             |     var_13h = r2;
    0x0001b6be strb.w r1, [sp, 0x12]             |     var_12h = r1;
    0x0001b6c2 mov.w r1, -1                      |     r1 = -1;
    0x0001b6c6 bl 0x174fc                        |     fcn_000174fc (r0, r1, r2, r3, r4);
    0x0001b6ca mov r1, r7                        |     r1 = r7;
    0x0001b6cc mov r0, r4                        |     r0 = r4;
    0x0001b6ce blx 0xeb0c                        |     fcn_0000eb0c ();
    0x0001b6d2 ldr r0, [sp, 0x1c]                |     r0 = var_1ch;
    0x0001b6d4 add r3, sp, 0x24                  |     r3 += var_24h;
    0x0001b6d6 cmp r0, r3                        |     
                                                 |     if (r0 != r3) {
    0x0001b6d8 beq 0x1b6de                       |         
    0x0001b6da blx 0xe9a4                        |         fcn_0000e9a4 ();
                                                 |     }
    0x0001b6de ldr r3, [pc, 0x88]                |     r3 = *(0x1b76a);
    0x0001b6e0 mov.w r2, -1                      |     r2 = -1;
    0x0001b6e4 ldr r1, [sp, 4]                   |     r1 = var_4h;
    0x0001b6e6 add.w r0, r4, 0x10                |     r0 = r4 + 0x10;
    0x0001b6ea ldr r3, [r5, r3]                  |     r3 = *((r5 + r3));
    0x0001b6ec str r2, [r4, 8]                   |     *((r4 + 8)) = r2;
    0x0001b6ee ldr r2, [sp, 8]                   |     r2 = var_8h;
    0x0001b6f0 adds r3, 8                        |     r3 += 8;
    0x0001b6f2 str r3, [r4]                      |     *(r4) = r3;
    0x0001b6f4 movs r3, 0                        |     r3 = 0;
    0x0001b6f6 str r3, [r4, 0xc]                 |     *((r4 + 0xc)) = r3;
    0x0001b6f8 add.w r3, r4, 0x18                |     r3 = r4 + 0x18;
    0x0001b6fc add r2, r1                        |     r2 += r1;
    0x0001b6fe str r3, [r4, 0x10]                |     *((r4 + 0x10)) = r3;
    0x0001b700 bl 0x19290                        |     fcn_00019290 (r0, r1, r2);
    0x0001b704 ldr r0, [sp, 4]                   |     r0 = var_4h;
    0x0001b706 cmp r0, r6                        |     
                                                 |     if (r0 != r6) {
    0x0001b708 beq 0x1b70e                       |         
    0x0001b70a blx 0xe9a4                        |         fcn_0000e9a4 ();
                                                 |     }
    0x0001b70e ldr r3, [pc, 0x5c]                |     r3 = *(0x1b76e);
    0x0001b710 ldr r2, [pc, 0x5c]                |     
    0x0001b712 ldr r3, [r5, r3]                  |     r3 = *((r5 + r3));
    0x0001b714 add r2, pc                        |     r2 = 0x36e88;
    0x0001b716 adds r3, 8                        |     r3 += 8;
    0x0001b718 str r3, [r4]                      |     *(r4) = r3;
    0x0001b71a ldr r3, [pc, 0x40]                |     r3 = *(0x1b75e);
    0x0001b71c ldr r3, [r2, r3]                  |     r3 = *(0x36e88);
    0x0001b71e ldr r2, [r3]                      |     r2 = *(0x36e88);
    0x0001b720 ldr r3, [sp, 0x34]                |     r3 = var_34h;
    0x0001b722 eors r2, r3                       |     r2 ^= r3;
    0x0001b724 mov.w r3, 0                       |     r3 = 0;
                                                 |     if (r2 == r3) {
    0x0001b728 bne 0x1b730                       |         
    0x0001b72a mov r0, r4                        |         r0 = r4;
    0x0001b72c add sp, 0x3c                      |         
    0x0001b72e pop {r4, r5, r6, r7, pc}          |         
                                                 |     }
    0x0001b730 blx 0xea48                        |     fcn_0000ea48 ();
    0x0001b734 mov r0, r4                        |     r0 = r4;
    0x0001b736 blx 0xea3c                        |     fcn_0000ea3c ();
                                                 |     do {
                                                 | label_0:
    0x0001b73a ldr r0, [sp, 4]                   |         r0 = var_4h;
    0x0001b73c cmp r0, r6                        |         
                                                 |         if (r0 != r6) {
    0x0001b73e beq 0x1b744                       |             
    0x0001b740 blx 0xe9a4                        |             fcn_0000e9a4 ();
                                                 |         }
    0x0001b744 blx 0xea54                        |         fcn_0000ea54 ();
    0x0001b748 ldr r0, [sp, 0x1c]                |         r0 = var_1ch;
    0x0001b74a add r3, sp, 0x24                  |         r3 += var_24h;
    0x0001b74c cmp r0, r3                        |         
    0x0001b74e beq 0x1b73a                       |         
                                                 |     } while (r0 == r3);
    0x0001b750 blx 0xe9a4                        |     fcn_0000e9a4 ();
    0x0001b754 b 0x1b73a                         |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x21f14 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00021f14 ()                  | void fcn_00021f14 (uint32_t arg1, uint32_t arg2, int16_t arg4) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r3 = arg4;
    0x00021f14 mov r2, r0                    |     r2 = r0;
    0x00021f16 ldr r0, [r0]                  |     r0 = *(r0);
    0x00021f18 push {r3, lr}                 |     
    0x00021f1a cmp.w r0, 0x40000000          |     
    0x00021f1c ldr r7, [pc, 0x200]           |     r7 = *(0x22120);
                                             |     if (r0 < 0x40000000) {
    0x00021f1e bhs 0x21f52                   |         
    0x00021f20 cmp r0, r1                    |         
                                             |         if (r0 >= r1) {
    0x00021f22 bls 0x21f36                   |             
    0x00021f24 lsls r1, r1, 1                |             r1 <<= 1;
    0x00021f26 cmp r0, r1                    |             
                                             |             if (r0 >= r1) {
    0x00021f28 bhs 0x21f36                   |                 goto label_0;
                                             |             }
    0x00021f2a cmp.w r1, 0x40000000          |             
    0x00021f2e itt lo                        |             
                                             |             if (r1 >= 0x40000000) {
    0x00021f30 movlo r0, r1                  |                 r0 = r1;
                                             |             }
                                             |             if (r1 >= 0x40000000) {
    0x00021f32 strlo r1, [r2]                |                 *(r2) = r1;
                                             |             }
                                             |             if (r1 >= 0x40000000) {
    0x00021f34 bhs 0x21f40                   |                 goto label_1;
                                             |             }
                                             |         }
                                             | label_0:
    0x00021f36 pop.w {r3, lr}                |         
    0x00021f3a adds r0, 1                    |         r0++;
    0x00021f3c b.w 0xe5e8                    |         void (*0xe5e8)() ();
                                             | label_1:
    0x00021f40 mvn r3, 0xc0000000            |         r3 = ~0xc0000000;
    0x00021f44 mov.w r0, 0x40000000          |         r0 = 0x40000000;
    0x00021f48 str r3, [r2]                  |         *(r2) = r3;
    0x00021f4a pop.w {r3, lr}                |         
    0x00021f4e b.w 0xe5e8                    |         void (*0xe5e8)() ();
                                             |     }
    0x00021f52 ldr r0, [pc, 8]               |     
    0x00021f54 add r0, pc                    |     r0 = 0x43eb6;
    0x00021f56 blx 0xe7ac                    |     fcn_0000e7ac ();
    0x00021f5a nop                           |     
    0x00021f5c ldrb r0, [r0, 0xa]            |     r0 = *((r0 + 0xa));
    0x00021f5e movs r0, r0                   |     
                                             | }
    ; assembly                                                                                   | /* r2dec pseudo code output */
                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x10e2c */
                                                                                                 | #include <stdint.h>
                                                                                                 |  
    ; (fcn) method.mqtt::async_client.add_token_std::shared_ptr_mqtt::delivery_token__ ()        | void method_mqtt::async_client_add_token_std::shared_ptr_mqtt::delivery_token_ (int16_t arg1, int16_t arg2) {
                                                                                                 |     int16_t var_4h_2;
                                                                                                 |     int16_t var_8h;
                                                                                                 |     int16_t var_ch_2;
                                                                                                 |     r0 = arg1;
                                                                                                 |     r1 = arg2;
                                                                                                 |     /* mqtt::async_client::add_token(std::shared_ptr<qtt::delivery_token>) */
    0x00010e2c mvnsmi lr, sp, lsr 18                                                             |     __asm ("mvnsmi lr, sp, lsr 18");
    0x00010e30 mov r5, r1                                                                        |     r5 = r1;
    0x00010e32 ldr r3, [r1]                                                                      |     r3 = *(r1);
    0x00010e34 sub sp, 0x10                                                                      |     
    0x00010e36 ldr r1, [pc, 0xfc]                                                                |     
    0x00010e38 ldr r2, [pc, 0xfc]                                                                |     r2 = *(0x10f38);
    0x00010e3a ldr r6, [pc, 0x100]                                                               |     
    0x00010e3c add r1, pc                                                                        |     r1 = 0x21d76;
    0x00010e3e ldr r2, [r1, r2]                                                                  |     
    0x00010e40 add r6, pc                                                                        |     r6 = 0x21d82;
    0x00010e42 ldr r2, [r2]                                                                      |     r2 = *(0x21d76);
    0x00010e44 str r2, [sp, 0xc]                                                                 |     var_ch_2 = r2;
    0x00010e46 mov.w r2, 0                                                                       |     r2 = 0;
    0x00010e4a cmp r3, 0                                                                         |     
                                                                                                 |     if (r3 == 0) {
    0x00010e4c beq 0x10ef2                                                                       |         goto label_1;
                                                                                                 |     }
    0x00010e4e movs r3, 0                                                                        |     r3 = 0;
    0x00010e50 mov r4, r0                                                                        |     r4 = r0;
    0x00010e52 strb.w r3, [sp, 8]                                                                |     var_8h = r3;
    0x00010e56 adds r0, 4                                                                        |     r0 += 4;
    0x00010e58 ldr r3, [pc, 0xe4]                                                                |     r3 = *(0x10f40);
    0x00010e5a str r0, [sp, 4]                                                                   |     var_4h_2 = r0;
    0x00010e5c ldr r7, [r6, r3]                                                                  |     r7 = *((r6 + r3));
                                                                                                 |     if (r7 != 0) {
    0x00010e5e cbz r7, 0x10e68                                                                   |         
    0x00010e60 blx 0xe5f8                                                                        |         r0 = fcn_0000e5f8 ();
    0x00010e64 cmp r0, 0                                                                         |         
                                                                                                 |         if (r0 != 0) {
    0x00010e66 bne 0x10f20                                                                       |             goto label_2;
                                                                                                 |         }
                                                                                                 |     }
    0x00010e68 movs r3, 1                                                                        |     r3 = 1;
    0x00010e6a movs r0, 0x10                                                                     |     r0 = 0x10;
    0x00010e6c add.w r8, r4, 0xc0                                                                |     r8 = r4 + 0xc0;
    0x00010e70 strb.w r3, [sp, 8]                                                                |     var_8h = r3;
    0x00010e74 blx 0xe5ec                                                                        |     fcn_0000e5ec ();
    0x00010e78 ldrd r1, r2, [r5]                                                                 |     __asm ("ldrd r1, r2, [r5]");
    0x00010e7c strd r1, r2, [r0, 8]                                                              |     __asm ("strd r1, r2, [r0, 8]");
    0x00010e80 cmp r2, 0                                                                         |     
                                                                                                 |     if (r2 == 0) {
    0x00010e82 beq 0x10f0c                                                                       |         goto label_3;
                                                                                                 |     }
    0x00010e84 ldr r3, [pc, 0xbc]                                                                |     r3 = *(0x10f44);
    0x00010e86 ldr r3, [r6, r3]                                                                  |     r3 = *((r6 + r3));
    0x00010e88 ldrb r3, [r3]                                                                     |     r3 = *(r3);
                                                                                                 |     if (r3 != 0) {
    0x00010e8a cbz r3, 0x10ec4                                                                   |         
    0x00010e8c ldr r3, [r2, 4]                                                                   |         r3 = *((r2 + 4));
    0x00010e8e mov r1, r8                                                                        |         r1 = r8;
    0x00010e90 adds r3, 1                                                                        |         r3++;
    0x00010e92 str r3, [r2, 4]                                                                   |         *((r2 + 4)) = r3;
    0x00010e94 blx 0xe604                                                                        |         fcn_0000e604 ();
    0x00010e98 ldr.w r3, [r4, 0xc8]                                                              |         r3 = *((r4 + 0xc8));
    0x00010e9c ldr r0, [sp, 4]                                                                   |         r0 = var_4h_2;
    0x00010e9e adds r3, 1                                                                        |         r3++;
    0x00010ea0 str.w r3, [r4, 0xc8]                                                              |         __asm ("str.w r3, [r4, 0xc8]");
                                                                                                 |         if (r7 == 0) {
                                                                                                 | label_0:
    0x00010ea4 cbz r7, 0x10ef2                                                                   |             goto label_1;
                                                                                                 |         }
    0x00010ea6 ldr r2, [pc, 0xa0]                                                                |         
    0x00010ea8 ldr r3, [pc, 0x8c]                                                                |         r3 = *(0x10f38);
    0x00010eaa add r2, pc                                                                        |         r2 = 0x21df8;
    0x00010eac ldr r3, [r2, r3]                                                                  |         r3 = *(0x21df8);
    0x00010eae ldr r2, [r3]                                                                      |         r2 = *(0x21df8);
    0x00010eb0 ldr r3, [sp, 0xc]                                                                 |         r3 = var_ch_2;
    0x00010eb2 eors r2, r3                                                                       |         r2 ^= r3;
    0x00010eb4 mov.w r3, 0                                                                       |         r3 = 0;
                                                                                                 |         if (r2 != r3) {
    0x00010eb8 bne 0x10f24                                                                       |             goto label_4;
                                                                                                 |         }
    0x00010eba add sp, 0x10                                                                      |         
    0x00010ebc pop.w {r4, r5, r6, r7, r8, lr}                                                    |         
    0x00010ec0 b.w 0xeea0                                                                        |         void (*0xeea0)() ();
                                                                                                 |     }
    0x00010ec4 adds r2, 4                                                                        |     r2 += 4;
    0x00010ec6 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x00010eca ldrex r3, [r2]                                                                    |         __asm ("ldrex r3, [r2]");
    0x00010ece adds r3, 1                                                                        |         r3++;
    0x00010ed0 strex r1, r3, [r2]                                                                |         __asm ("strex r1, r3, [r2]");
    0x00010ed4 cmp r1, 0                                                                         |         
    0x00010ed6 bne 0x10eca                                                                       |         
                                                                                                 |     } while (r1 != 0);
    0x00010ed8 mov r1, r8                                                                        |     r1 = r8;
    0x00010eda dmb ish                                                                           |     __asm ("dmb ish");
    0x00010ede blx 0xe604                                                                        |     fcn_0000e604 ();
    0x00010ee2 ldr.w r3, [r4, 0xc8]                                                              |     r3 = *((r4 + 0xc8));
    0x00010ee6 ldr r0, [sp, 4]                                                                   |     r0 = var_4h_2;
    0x00010ee8 adds r3, 1                                                                        |     r3++;
    0x00010eea str.w r3, [r4, 0xc8]                                                              |     __asm ("str.w r3, [r4, 0xc8]");
    0x00010eee cmp r0, 0                                                                         |     
                                                                                                 |     if (r0 != 0) {
    0x00010ef0 bne 0x10ea4                                                                       |         goto label_0;
                                                                                                 |     }
                                                                                                 | label_1:
    0x00010ef2 ldr r2, [pc, 0x58]                                                                |     
    0x00010ef4 ldr r3, [pc, 0x40]                                                                |     r3 = *(0x10f38);
    0x00010ef6 add r2, pc                                                                        |     r2 = 0x21e48;
    0x00010ef8 ldr r3, [r2, r3]                                                                  |     r3 = *(0x21e48);
    0x00010efa ldr r2, [r3]                                                                      |     r2 = *(0x21e48);
    0x00010efc ldr r3, [sp, 0xc]                                                                 |     r3 = var_ch_2;
    0x00010efe eors r2, r3                                                                       |     r2 ^= r3;
    0x00010f00 mov.w r3, 0                                                                       |     r3 = 0;
                                                                                                 |     if (r2 == r3) {
    0x00010f04 bne 0x10f24                                                                       |         
    0x00010f06 add sp, 0x10                                                                      |         
    0x00010f08 pop.w {r4, r5, r6, r7, r8, pc}                                                    |         
                                                                                                 | label_3:
    0x00010f0c mov r1, r8                                                                        |         r1 = r8;
    0x00010f0e blx 0xe604                                                                        |         fcn_0000e604 ();
    0x00010f12 ldr.w r3, [r4, 0xc8]                                                              |         r3 = *((r4 + 0xc8));
    0x00010f16 ldr r0, [sp, 4]                                                                   |         r0 = var_4h_2;
    0x00010f18 adds r3, 1                                                                        |         r3++;
    0x00010f1a str.w r3, [r4, 0xc8]                                                              |         __asm ("str.w r3, [r4, 0xc8]");
    0x00010f1e b 0x10ea4                                                                         |         goto label_0;
                                                                                                 | label_2:
    0x00010f20 blx 0xe830                                                                        |         fcn_0000e830 ();
                                                                                                 |     }
                                                                                                 | label_4:
    0x00010f24 blx 0xea48                                                                        |     fcn_0000ea48 ();
    0x00010f28 add r0, sp, 4                                                                     |     r0 += var_4h_2;
    0x00010f2a bl 0x1857c                                                                        |     r0 = fcn_0001857c (r0);
    0x00010f2e blx 0xea54                                                                        |     fcn_0000ea54 ();
    0x00010f32 nop                                                                               |     
    0x00010f34 ldm r4, {r2, r4, r5, r6, r7}                                                      |     r2 = *(r4);
                                                                                                 |     r4 = *((r4 + 4));
                                                                                                 |     r5 = *((r4 + 8));
                                                                                                 |     r6 = *((r4 + 12));
                                                                                                 |     r7 = *((r4 + 16));
    0x00010f36 movs r2, r0                                                                       |     r2 = r0;
    0x00010f38 lsls r0, r6, 0xc                                                                  |     r0 = r6 << 0xc;
    0x00010f3a movs r0, r0                                                                       |     
    0x00010f3c ldm r4, {r4, r5, r6, r7}                                                          |     r4 = *(r4);
                                                                                                 |     r5 = *((r4 + 4));
                                                                                                 |     r6 = *((r4 + 8));
                                                                                                 |     r7 = *((r4 + 12));
    0x00010f3e movs r2, r0                                                                       |     r2 = r0;
    0x00010f40 lsls r0, r4, 0x11                                                                 |     r0 = r4 << 0x11;
    0x00010f42 movs r0, r0                                                                       |     
    0x00010f44 lsls r4, r4, 0x10                                                                 |     r4 <<= 0x10;
    0x00010f46 movs r0, r0                                                                       |     
    0x00010f48 ldm r4!, {r1, r2, r7}                                                             |     r1 = *(r4!);
                                                                                                 |     r2 = *((r4! + 4));
                                                                                                 |     r7 = *((r4! + 8));
    0x00010f4a movs r2, r0                                                                       |     r2 = r0;
    0x00010f4c ldm r4, {r1, r3, r4, r5}                                                          |     r1 = *(r4);
                                                                                                 |     r3 = *((r4 + 4));
                                                                                                 |     r4 = *((r4 + 8));
                                                                                                 |     r5 = *((r4 + 12));
    0x00010f4e movs r2, r0                                                                       |     r2 = r0;
                                                                                                 | }
    ; assembly                                                                           | /* r2dec pseudo code output */
                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x10aa8 */
                                                                                         | #include <stdint.h>
                                                                                         |  
    ; (fcn) method.mqtt::async_client.get_pending_delivery_token_int__const ()           | void method_mqtt::async_client_get_pending_delivery_token_int_const (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                         |     int16_t var_4h;
                                                                                         |     int16_t var_8h;
                                                                                         |     int16_t var_ch;
                                                                                         |     int16_t var_14h;
                                                                                         |     r0 = arg1;
                                                                                         |     r1 = arg2;
                                                                                         |     r2 = arg3;
                                                                                         |     /* mqtt::async_client::get_pending_delivery_token(int) const */
    0x00010aa8 svcmi 0xf0e92d                                                            |     __asm ("svcmi aav.0x000000ff");
    0x00010aac subs r6, r2, 0                                                            |     r6 = r2 - 0;
    0x00010aae ldr r4, [pc, 0x100]                                                       |     
    0x00010ab0 sub sp, 0x14                                                              |     
    0x00010ab2 mov r7, r0                                                                |     r7 = r0;
    0x00010ab4 ldr r3, [pc, 0xfc]                                                        |     r3 = *(0x10bb4);
    0x00010ab6 add r4, pc                                                                |     r4 = 0x2166c;
    0x00010ab8 ldr.w sb, [pc, 0xfc]                                                      |     sb = *(0x00010bb8);
    0x00010abc ldr r3, [r4, r3]                                                          |     
    0x00010abe add sb, pc                                                                |     sb += pc;
    0x00010ac0 ldr r3, [r3]                                                              |     r3 = *(0x2166c);
    0x00010ac2 str r3, [sp, 0xc]                                                         |     var_ch = r3;
    0x00010ac4 mov.w r3, 0                                                               |     r3 = 0;
                                                                                         |     if (r6 <= r2) {
    0x00010ac8 bgt 0x10aec                                                               |         
                                                                                         | label_2:
    0x00010aca movs r3, 0                                                                |         r3 = 0;
    0x00010acc strd r3, r3, [r7]                                                         |         __asm ("strd r3, r3, [r7]");
                                                                                         | label_1:
    0x00010ad0 ldr r2, [pc, 0xe8]                                                        |         
    0x00010ad2 ldr r3, [pc, 0xe0]                                                        |         r3 = *(0x10bb6);
    0x00010ad4 add r2, pc                                                                |         r2 = 0x21694;
    0x00010ad6 ldr r3, [r2, r3]                                                          |         r3 = *(0x21694);
    0x00010ad8 ldr r2, [r3]                                                              |         r2 = *(0x21694);
    0x00010ada ldr r3, [sp, 0xc]                                                         |         r3 = var_ch;
    0x00010adc eors r2, r3                                                               |         r2 ^= r3;
    0x00010ade mov.w r3, 0                                                               |         r3 = 0;
                                                                                         |         if (r2 != r3) {
    0x00010ae2 bne 0x10b9e                                                               |             goto label_4;
                                                                                         |         }
    0x00010ae4 mov r0, r7                                                                |         r0 = r7;
    0x00010ae6 add sp, 0x14                                                              |         
    0x00010ae8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                |         
                                                                                         |     }
    0x00010aec ldr r3, [pc, 0xd0]                                                        |     r3 = *(0x10bc0);
    0x00010aee add.w sl, r1, 4                                                           |     sl = r1 + 4;
    0x00010af2 movs r2, 0                                                                |     r2 = 0;
    0x00010af4 str.w sl, [sp, 4]                                                         |     __asm ("str.w sl, [var_4h]");
    0x00010af8 strb.w r2, [sp, 8]                                                        |     var_8h = r2;
    0x00010afc mov r5, r1                                                                |     r5 = r1;
    0x00010afe ldr.w fp, [sb, r3]                                                        |     fp = *((sb + r3));
    0x00010b02 cmp.w fp, 0                                                               |     
                                                                                         |     if (fp != 0) {
    0x00010b06 beq 0x10b12                                                               |         
    0x00010b08 mov r0, sl                                                                |         r0 = sl;
    0x00010b0a blx 0xe5f8                                                                |         r0 = fcn_0000e5f8 ();
    0x00010b0e cmp r0, 0                                                                 |         
                                                                                         |         if (r0 != 0) {
    0x00010b10 bne 0x10ba2                                                               |             goto label_5;
                                                                                         |         }
                                                                                         |     }
    0x00010b12 ldr r4, [r5, 0xc0]!                                                       |     r4 = *((r5 += 0xc0));
    0x00010b16 movs r3, 1                                                                |     r3 = 1;
    0x00010b18 strb.w r3, [sp, 8]                                                        |     var_8h = r3;
    0x00010b1c cmp r5, r4                                                                |     
                                                                                         |     if (r5 == r4) {
    0x00010b1e beq 0x10b6c                                                               |         goto label_6;
                                                                                         |     }
    0x00010b20 ldr r3, [pc, 0xa0]                                                        |     r3 = *(0x10bc4);
    0x00010b22 ldr.w r8, [sb, r3]                                                        |     r8 = *((sb + r3));
    0x00010b26 b 0x10b34                                                                 |     
                                                                                         |     while (r3 == r8) {
    0x00010b28 ldr r0, [r0, 0x78]                                                        |         r0 = *((r0 + 0x78));
    0x00010b2a cmp r6, r0                                                                |         
                                                                                         |         if (r6 == r0) {
    0x00010b2c beq 0x10b44                                                               |             goto label_7;
                                                                                         |         }
                                                                                         | label_0:
    0x00010b2e ldr r4, [r4]                                                              |         r4 = *(r4);
    0x00010b30 cmp r5, r4                                                                |         
                                                                                         |         if (r5 == r4) {
    0x00010b32 beq 0x10b6c                                                               |             goto label_6;
                                                                                         |         }
    0x00010b34 ldr r0, [r4, 8]                                                           |         r0 = *((r4 + 8));
    0x00010b36 ldr r3, [r0]                                                              |         r3 = *(r0);
    0x00010b38 ldr r3, [r3, 0x10]                                                        |         r3 = *((r3 + 0x10));
    0x00010b3a cmp r3, r8                                                                |         
    0x00010b3c beq 0x10b28                                                               |         
                                                                                         |     }
    0x00010b3e blx r3                                                                    |     r0 = uint32_t (*r3)(uint32_t) (r0);
    0x00010b40 cmp r6, r0                                                                |     
                                                                                         |     if (r6 != r0) {
    0x00010b42 bne 0x10b2e                                                               |         goto label_0;
                                                                                         |     }
                                                                                         | label_7:
    0x00010b44 ldrd r2, r3, [r4, 8]                                                      |     __asm ("ldrd r2, r3, [r4, 8]");
    0x00010b48 strd r2, r3, [r7]                                                         |     __asm ("strd r2, r3, [r7]");
                                                                                         |     if (r3 != 0) {
    0x00010b4c cbz r3, 0x10b5e                                                           |         
    0x00010b4e ldr r2, [pc, 0x78]                                                        |         r2 = *(0x10bca);
    0x00010b50 ldr.w r2, [sb, r2]                                                        |         r2 = *((sb + r2));
    0x00010b54 ldrb r2, [r2]                                                             |         r2 = *(r2);
                                                                                         |         if (r2 == 0) {
    0x00010b56 cbz r2, 0x10b7a                                                           |             goto label_8;
                                                                                         |         }
    0x00010b58 ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x00010b5a adds r2, 1                                                                |         r2++;
    0x00010b5c str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
                                                                                         |     }
                                                                                         | label_3:
    0x00010b5e cmp.w fp, 0                                                               |     
                                                                                         |     if (fp == 0) {
    0x00010b62 beq 0x10ad0                                                               |         goto label_1;
                                                                                         |     }
    0x00010b64 mov r0, sl                                                                |     r0 = sl;
    0x00010b66 blx 0xeea4                                                                |     fcn_0000eea4 ();
    0x00010b6a b 0x10ad0                                                                 |     goto label_1;
                                                                                         | label_6:
    0x00010b6c cmp.w fp, 0                                                               |     
                                                                                         |     if (fp == 0) {
    0x00010b70 beq 0x10aca                                                               |         goto label_2;
                                                                                         |     }
    0x00010b72 mov r0, sl                                                                |     r0 = sl;
    0x00010b74 blx 0xeea4                                                                |     fcn_0000eea4 ();
    0x00010b78 b 0x10aca                                                                 |     goto label_2;
                                                                                         | label_8:
    0x00010b7a adds r3, 4                                                                |     r3 += 4;
    0x00010b7c dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x00010b80 ldrex r1, [r3]                                                            |         __asm ("ldrex r1, [r3]");
    0x00010b84 adds r1, 1                                                                |         r1++;
    0x00010b86 strex r2, r1, [r3]                                                        |         __asm ("strex r2, r1, [r3]");
    0x00010b8a cmp r2, 0                                                                 |         
    0x00010b8c bne 0x10b80                                                               |         
                                                                                         |     } while (r2 != 0);
    0x00010b8e dmb ish                                                                   |     __asm ("dmb ish");
    0x00010b92 ldr.w sl, [sp, 4]                                                         |     sl = var_4h;
    0x00010b96 cmp.w sl, 0                                                               |     
                                                                                         |     if (sl == 0) {
    0x00010b9a beq 0x10ad0                                                               |         goto label_1;
                                                                                         |     }
    0x00010b9c b 0x10b5e                                                                 |     goto label_3;
                                                                                         | label_4:
    0x00010b9e blx 0xea48                                                                |     fcn_0000ea48 ();
                                                                                         | label_5:
    0x00010ba2 blx 0xe830                                                                |     fcn_0000e830 ();
    0x00010ba6 add r0, sp, 4                                                             |     r0 += var_4h;
    0x00010ba8 bl 0x1857c                                                                |     r0 = fcn_0001857c (r0);
    0x00010bac blx 0xea54                                                                |     fcn_0000ea54 ();
                                                                                         |     if (sl == 0) {
    0x00010bb0 beq 0x10ca8                                                               |         goto label_9;
                                                                                         |     }
    0x00010bb2 movs r2, r0                                                               |     r2 = r0;
    0x00010bb4 lsls r0, r6, 0xc                                                          |     r0 = r6 << 0xc;
    0x00010bb6 movs r0, r0                                                               |     
                                                                                         |     if (r0 == r0) {
    0x00010bb8 beq 0x10ca0                                                               |         goto label_10;
                                                                                         |     }
    0x00010bba movs r2, r0                                                               |     r2 = r0;
                                                                                         |     if (r2 != r0) {
    0x00010bbc beq 0x10c78                                                               |         
    0x00010bbe movs r2, r0                                                               |         r2 = r0;
    0x00010bc0 lsls r0, r4, 0x11                                                         |         r0 = r4 << 0x11;
    0x00010bc2 movs r0, r0                                                               |         
    0x00010bc4 lsls r4, r3, 0xe                                                          |         r4 = r3 << 0xe;
    0x00010bc6 movs r0, r0                                                               |         
    0x00010bc8 lsls r4, r4, 0x10                                                         |         r4 <<= 0x10;
    0x00010bca movs r0, r0                                                               |         
                                                                                         |     }
    0x00010c78 ldr r2, [pc, 0x70]                                                        |     
    0x00010c7a ldr r3, [pc, 0x54]                                                        |     r3 = *(0x10cd2);
    0x00010c7c add r2, pc                                                                |     r2 = 0x2196c;
    0x00010c7e ldr r3, [r2, r3]                                                          |     r3 = *(0x2196c);
    0x00010c80 ldr r2, [r3]                                                              |     r2 = *(0x2196c);
    0x00010c82 ldr r3, [sp, 0x14]                                                        |     r3 = var_14h;
    0x00010c84 eors r2, r3                                                               |     r2 ^= r3;
    0x00010c86 mov.w r3, 0                                                               |     r3 = 0;
                                                                                         |     if (r2 == r3) {
    0x00010c8a bne 0x10c92                                                               |         
    0x00010c8c add sp, 0x18                                                              |         
    0x00010c8e pop.w {r4, r5, r6, r7, r8, pc}                                            |         
                                                                                         |     }
    0x00010c92 blx 0xea48                                                                |     fcn_0000ea48 ();
    0x00010c96 blx 0xe830                                                                |     fcn_0000e830 ();
                                                                                         |     do {
    0x00010c9a add r0, sp, 0xc                                                           |         r0 += var_ch;
    0x00010c9c bl 0x1857c                                                                |         r0 = fcn_0001857c (r0);
                                                                                         | label_10:
    0x00010ca0 blx 0xea54                                                                |         fcn_0000ea54 ();
    0x00010ca4 movs r3, 0                                                                |         r3 = 0;
    0x00010ca6 movs r0, 0x28                                                             |         r0 = 0x28;
                                                                                         | label_9:
    0x00010ca8 str r3, [r4, 0x58]                                                        |         *((r4 + 0x58)) = r3;
    0x00010caa blx 0xe764                                                                |         fcn_0000e764 ();
    0x00010cae mov r1, r5                                                                |         r1 = r5;
    0x00010cb0 mov r4, r0                                                                |         r4 = r0;
    0x00010cb2 bl 0x17aa8                                                                |         fcn_00017aa8 (r0, r1);
    0x00010cb6 ldr r2, [pc, 0x38]                                                        |         r2 = *(0x10cf2);
    0x00010cb8 mov r0, r4                                                                |         r0 = r4;
    0x00010cba ldr r3, [pc, 0x38]                                                        |         r3 = *(0x10cf6);
    0x00010cbc ldr r2, [r6, r2]                                                          |         r2 = *((r6 + r2));
    0x00010cbe ldr r1, [r6, r3]                                                          |         r1 = *((r6 + r3));
    0x00010cc0 blx 0xed0c                                                                |         fcn_0000ed0c ();
    0x00010cc4 mov r0, r4                                                                |         r0 = r4;
    0x00010cc6 blx 0xe878                                                                |         fcn_0000e878 ();
    0x00010cca b 0x10c9a                                                                 |         
                                                                                         |     } while (1);
                                                                                         | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x168c8 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) method.mqtt::async_client.get_pending_delivery_tokens___const ()     | void method_mqtt::async_client_get_pending_delivery_tokens_const (int16_t arg1, int16_t arg2) {
                                                                                 |     int16_t var_4h;
                                                                                 |     int16_t var_8h;
                                                                                 |     int16_t var_ch;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     /* mqtt::async_client::get_pending_delivery_tokens() const */
    0x000168c8 push.w {r4, r5, r6, r7, r8, sb, lr}                               |     
    0x000168cc adds r7, r1, 4                                                    |     r7 = r1 + 4;
    0x000168ce mov r6, r1                                                        |     r6 = r1;
    0x000168d0 ldr r1, [pc, 0x11c]                                               |     
    0x000168d2 movs r3, 0                                                        |     r3 = 0;
    0x000168d4 sub sp, 0x14                                                      |     
    0x000168d6 ldr r2, [pc, 0x11c]                                               |     r2 = *(0x169f6);
    0x000168d8 mov r5, r0                                                        |     r5 = r0;
    0x000168da add r1, pc                                                        |     r1 = 0x2d2ce;
    0x000168dc ldr.w r8, [pc, 0x118]                                             |     r8 = *(0x000169f8);
    0x000168e0 ldr r2, [r1, r2]                                                  |     
    0x000168e2 add r8, pc                                                        |     r8 += pc;
    0x000168e4 ldr r2, [r2]                                                      |     r2 = *(0x2d2ce);
    0x000168e6 str r2, [sp, 0xc]                                                 |     var_ch = r2;
    0x000168e8 mov.w r2, 0                                                       |     r2 = 0;
    0x000168ec strd r3, r3, [r0]                                                 |     __asm ("strd r3, r3, [r0]");
    0x000168f0 str r3, [r0, 8]                                                   |     *((r0 + 8)) = r3;
    0x000168f2 strb.w r3, [sp, 8]                                                |     var_8h = r3;
    0x000168f6 ldr r3, [pc, 0x104]                                               |     r3 = *(0x169fe);
    0x000168f8 str r7, [sp, 4]                                                   |     var_4h = r7;
    0x000168fa ldr.w sb, [r8, r3]                                                |     sb = *((r8 + r3));
    0x000168fe cmp.w sb, 0                                                       |     
                                                                                 |     if (sb != 0) {
    0x00016902 beq 0x1690e                                                       |         
    0x00016904 mov r0, r7                                                        |         r0 = r7;
    0x00016906 blx 0xe5f8                                                        |         r0 = fcn_0000e5f8 ();
    0x0001690a cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x0001690c bne 0x169be                                                       |             goto label_4;
                                                                                 |         }
                                                                                 |     }
    0x0001690e ldr r4, [r6, 0xc0]!                                               |     r4 = *((r6 += 0xc0));
    0x00016912 movs r3, 1                                                        |     r3 = 1;
    0x00016914 strb.w r3, [sp, 8]                                                |     var_8h = r3;
    0x00016918 cmp r6, r4                                                        |     
                                                                                 |     if (r6 == r4) {
    0x0001691a beq 0x1696a                                                       |         goto label_5;
                                                                                 |     }
    0x0001691c ldr r3, [pc, 0xe0]                                                |     r3 = *(0x16a00);
    0x0001691e ldr.w r7, [r8, r3]                                                |     r7 = *((r8 + r3));
    0x00016922 b 0x1692a                                                         |     
                                                                                 |     while (r0 <= 0) {
                                                                                 | label_2:
    0x00016924 ldr r4, [r4]                                                      |         r4 = *(r4);
    0x00016926 cmp r6, r4                                                        |         
                                                                                 |         if (r6 == r4) {
    0x00016928 beq 0x16966                                                       |             goto label_6;
                                                                                 |         }
                                                                                 | label_0:
    0x0001692a ldr r0, [r4, 8]                                                   |         r0 = *((r4 + 8));
    0x0001692c ldr r3, [r0]                                                      |         r3 = *(r0);
    0x0001692e ldr r3, [r3, 0x10]                                                |         r3 = *((r3 + 0x10));
    0x00016930 cmp r3, r7                                                        |         
                                                                                 |         if (r3 != r7) {
    0x00016932 bne 0x16992                                                       |             goto label_7;
                                                                                 |         }
    0x00016934 ldr r0, [r0, 0x78]                                                |         r0 = *((r0 + 0x78));
                                                                                 | label_1:
    0x00016936 cmp r0, 0                                                         |         
    0x00016938 ble 0x16924                                                       |         
                                                                                 |     }
    0x0001693a ldrd r1, r3, [r5, 4]                                              |     __asm ("ldrd r1, r3, [r5, 4]");
    0x0001693e cmp r1, r3                                                        |     
                                                                                 |     if (r1 == r3) {
    0x00016940 beq 0x16996                                                       |         goto label_8;
                                                                                 |     }
    0x00016942 ldrd r2, r3, [r4, 8]                                              |     __asm ("ldrd r2, r3, [r4, 8]");
    0x00016946 strd r2, r3, [r1]                                                 |     __asm ("strd r2, r3, [r1]");
                                                                                 |     if (r3 != 0) {
    0x0001694a cbz r3, 0x1695c                                                   |         
    0x0001694c ldr r2, [pc, 0xb4]                                                |         r2 = *(0x16a04);
    0x0001694e ldr.w r2, [r8, r2]                                                |         r2 = *((r8 + r2));
    0x00016952 ldrb r2, [r2]                                                     |         r2 = *(r2);
                                                                                 |         if (r2 == 0) {
    0x00016954 cbz r2, 0x169a2                                                   |             goto label_9;
                                                                                 |         }
    0x00016956 ldr r2, [r3, 4]                                                   |         r2 = *((r3 + 4));
    0x00016958 adds r2, 1                                                        |         r2++;
    0x0001695a str r2, [r3, 4]                                                   |         *((r3 + 4)) = r2;
                                                                                 |     }
                                                                                 | label_3:
    0x0001695c ldr r4, [r4]                                                      |     r4 = *(r4);
    0x0001695e adds r1, 8                                                        |     r1 += 8;
    0x00016960 str r1, [r5, 4]                                                   |     *((r5 + 4)) = r1;
    0x00016962 cmp r6, r4                                                        |     
                                                                                 |     if (r6 != r4) {
    0x00016964 bne 0x1692a                                                       |         goto label_0;
                                                                                 |     }
                                                                                 | label_6:
    0x00016966 ldr r7, [sp, 4]                                                   |     r7 = var_4h;
                                                                                 |     if (r7 != 0) {
    0x00016968 cbz r7, 0x16976                                                   |         
                                                                                 | label_5:
    0x0001696a cmp.w sb, 0                                                       |         
                                                                                 |         if (sb == 0) {
    0x0001696e beq 0x16976                                                       |             goto label_10;
                                                                                 |         }
    0x00016970 mov r0, r7                                                        |         r0 = r7;
    0x00016972 blx 0xeea4                                                        |         fcn_0000eea4 ();
                                                                                 |     }
                                                                                 | label_10:
    0x00016976 ldr r2, [pc, 0x90]                                                |     
    0x00016978 ldr r3, [pc, 0x78]                                                |     r3 = *(0x169f4);
    0x0001697a add r2, pc                                                        |     r2 = 0x2d388;
    0x0001697c ldr r3, [r2, r3]                                                  |     r3 = *(0x2d388);
    0x0001697e ldr r2, [r3]                                                      |     r2 = *(0x2d388);
    0x00016980 ldr r3, [sp, 0xc]                                                 |     r3 = var_ch;
    0x00016982 eors r2, r3                                                       |     r2 ^= r3;
    0x00016984 mov.w r3, 0                                                       |     r3 = 0;
                                                                                 |     if (r2 != r3) {
    0x00016988 bne 0x169c2                                                       |         goto label_11;
                                                                                 |     }
    0x0001698a mov r0, r5                                                        |     r0 = r5;
    0x0001698c add sp, 0x14                                                      |     
    0x0001698e pop.w {r4, r5, r6, r7, r8, sb, pc}                                |     
                                                                                 | label_7:
    0x00016992 blx r3                                                            |     uint32_t (*r3)(uint32_t) (r0);
    0x00016994 b 0x16936                                                         |     goto label_1;
                                                                                 | label_8:
    0x00016996 add.w r2, r4, 8                                                   |     r2 = r4 + 8;
    0x0001699a mov r0, r5                                                        |     r0 = r5;
    0x0001699c blx 0xea0c                                                        |     fcn_0000ea0c ();
    0x000169a0 b 0x16924                                                         |     goto label_2;
                                                                                 | label_9:
    0x000169a2 adds r3, 4                                                        |     r3 += 4;
    0x000169a4 dmb ish                                                           |     __asm ("dmb ish");
                                                                                 |     do {
    0x000169a8 ldrex r1, [r3]                                                    |         __asm ("ldrex r1, [r3]");
    0x000169ac adds r1, 1                                                        |         r1++;
    0x000169ae strex r2, r1, [r3]                                                |         __asm ("strex r2, r1, [r3]");
    0x000169b2 cmp r2, 0                                                         |         
    0x000169b4 bne 0x169a8                                                       |         
                                                                                 |     } while (r2 != 0);
    0x000169b6 dmb ish                                                           |     __asm ("dmb ish");
    0x000169ba ldr r1, [r5, 4]                                                   |     r1 = *((r5 + 4));
    0x000169bc b 0x1695c                                                         |     goto label_3;
                                                                                 | label_4:
    0x000169be blx 0xe830                                                        |     fcn_0000e830 ();
                                                                                 | label_11:
    0x000169c2 blx 0xea48                                                        |     fcn_0000ea48 ();
    0x000169c6 add r0, sp, 4                                                     |     r0 += var_4h;
    0x000169c8 bl 0x1857c                                                        |     fcn_0001857c (r0);
    0x000169cc ldrd r4, r6, [r5]                                                 |     __asm ("ldrd r4, r6, [r5]");
                                                                                 |     do {
    0x000169d0 cmp r6, r4                                                        |         
                                                                                 |         if (r6 == r4) {
    0x000169d2 beq 0x169e2                                                       |             goto label_12;
                                                                                 |         }
    0x000169d4 ldr r0, [r4, 4]                                                   |         r0 = *((r4 + 4));
                                                                                 |         if (r0 != 0) {
    0x000169d6 cbz r0, 0x169dc                                                   |             
    0x000169d8 bl 0x18a84                                                        |             fcn_00018a84 (r0);
                                                                                 |         }
    0x000169dc adds r4, 8                                                        |         r4 += 8;
    0x000169de b 0x169d0                                                         |         
                                                                                 |     } while (1);
                                                                                 | label_12:
    0x000169e2 ldr r0, [r5]                                                      |     r0 = *(r5);
                                                                                 |     if (r0 != 0) {
    0x000169e4 cbz r0, 0x169ea                                                   |         
    0x000169e6 blx 0xe9a4                                                        |         fcn_0000e9a4 ();
                                                                                 |     }
    0x000169ea blx 0xea54                                                        |     fcn_0000ea54 ();
    0x000169ee nop                                                               |     
    0x000169f0 strb r6, [r2, 9]                                                  |     *((r2 + 9)) = r6;
    0x000169f2 movs r2, r0                                                       |     r2 = r0;
    0x000169f4 lsls r0, r6, 0xc                                                  |     r0 = r6 << 0xc;
    0x000169f6 movs r0, r0                                                       |     
    0x000169f8 strb r6, [r1, 9]                                                  |     *((r1 + 9)) = r6;
    0x000169fa movs r2, r0                                                       |     r2 = r0;
    0x000169fc lsls r0, r4, 0x11                                                 |     r0 = r4 << 0x11;
    0x000169fe movs r0, r0                                                       |     
    0x00016a00 lsls r4, r3, 0xe                                                  |     r4 = r3 << 0xe;
    0x00016a02 movs r0, r0                                                       |     
    0x00016a04 lsls r4, r4, 0x10                                                 |     r4 <<= 0x10;
    0x00016a06 movs r0, r0                                                       |     
    0x00016a08 strb r6, [r6, 6]                                                  |     *((r6 + 6)) = r6;
    0x00016a0a movs r2, r0                                                       |     r2 = r0;
                                                                                 | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x115fc */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) method.mqtt::async_client.on_connection_lost_void__char_ ()      | void method_mqtt::async_client_on_connection_lost_void_char_ (uint32_t arg1, uint32_t arg2) {
                                                                             |     int16_t var_4h;
                                                                             |     int16_t var_8h;
                                                                             |     uint32_t var_ch;
                                                                             |     int32_t var_ch_2;
                                                                             |     int16_t var_14h;
                                                                             |     int16_t var_24h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
                                                                             |     /* mqtt::async_client::on_connection_lost(void*, char*) */
    0x000115fc blmi 0x1223f20                                                |     __asm ("blmi 0x1223f20");
    0x00011600 push {r4, r5, r6, r7, lr}                                     |     
    0x00011602 sub sp, 0x2c                                                  |     
    0x00011604 add r2, pc                                                    |     r2 += pc;
    0x00011606 ldr r6, [pc, 0x11c]                                           |     
    0x00011608 ldr r3, [r2, r3]                                              |     r3 = *((r2 + r3));
    0x0001160a add r6, pc                                                    |     r6 = 0x22d34;
    0x0001160c ldr r3, [r3]                                                  |     r3 = *(r3);
    0x0001160e str r3, [sp, 0x24]                                            |     var_24h = r3;
    0x00011610 mov.w r3, 0                                                   |     r3 = 0;
    0x00011614 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x00011616 beq 0x116a2                                                   |         goto label_3;
                                                                             |     }
    0x00011618 mov r5, r1                                                    |     r5 = r1;
    0x0001161a mov r4, r0                                                    |     r4 = r0;
    0x0001161c add r7, sp, 0x14                                              |     r7 += var_14h;
    0x0001161e cmp r1, 0                                                     |     
                                                                             |     if (r1 == 0) {
    0x00011620 beq 0x116ba                                                   |         goto label_4;
                                                                             |     }
    0x00011622 mov r0, r1                                                    |     r0 = r1;
    0x00011624 str r7, [sp, 0xc]                                             |     var_ch = r7;
    0x00011626 blx 0xec10                                                    |     fcn_0000ec10 ();
    0x0001162a mov r1, r5                                                    |     r1 = r5;
    0x0001162c adds r2, r5, r0                                               |     r2 = r5 + r0;
    0x0001162e add r0, sp, 0xc                                               |     r0 += var_ch;
    0x00011630 bl 0xf650                                                     |     fcn_0000f650 (r0, r1, r2);
                                                                             |     do {
    0x00011634 ldr r0, [r4, 0x58]                                            |         r0 = *((r4 + 0x58));
                                                                             |         if (r0 != 0) {
    0x00011636 cbz r0, 0x11644                                               |             
    0x00011638 ldr r3, [r0]                                                  |             r3 = *(r0);
    0x0001163a ldr r2, [pc, 0xec]                                            |             r2 = *(0x1172a);
    0x0001163c ldr r3, [r3, 0xc]                                             |             r3 = *((r3 + 0xc));
    0x0001163e ldr r2, [r6, r2]                                              |             r2 = *((r6 + r2));
    0x00011640 cmp r3, r2                                                    |             
                                                                             |             if (r3 != r2) {
    0x00011642 bne 0x116de                                                   |                 goto label_5;
                                                                             |             }
                                                                             |         }
                                                                             | label_1:
    0x00011644 ldr r3, [r4, 0x74]                                            |         r3 = *((r4 + 0x74));
                                                                             |         if (r3 != 0) {
    0x00011646 cbz r3, 0x11652                                               |             
    0x00011648 ldr r3, [r4, 0x78]                                            |             r3 = *((r4 + 0x78));
    0x0001164a add r1, sp, 0xc                                               |             r1 += var_ch;
    0x0001164c add.w r0, r4, 0x6c                                            |             r0 = r4 + 0x6c;
    0x00011650 blx r3                                                        |             uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                             |         }
    0x00011652 ldr.w r0, [r4, 0xcc]                                          |         r0 = *((r4 + 0xcc));
                                                                             |         if (r0 != 0) {
    0x00011656 cbz r0, 0x11698                                               |             
    0x00011658 movs r3, 0                                                    |             r3 = 0;
    0x0001165a add r1, sp, 4                                                 |             r1 += var_4h;
    0x0001165c strd r3, r3, [sp, 4]                                          |             __asm ("strd r3, r3, [var_8h]");
    0x00011660 bl 0x18704                                                    |             fcn_00018704 (r0, r1);
    0x00011664 ldr r4, [sp, 8]                                               |             r4 = var_8h;
                                                                             |             if (r4 == 0) {
    0x00011666 cbz r4, 0x11698                                               |                 goto label_6;
                                                                             |             }
    0x00011668 ldr r3, [pc, 0xc0]                                            |             r3 = *(0x1172c);
    0x0001166a ldr r5, [r6, r3]                                              |             r5 = *((r6 + r3));
    0x0001166c ldrb r3, [r5]                                                 |             r3 = *(r5);
                                                                             |             if (r3 == 0) {
    0x0001166e cbz r3, 0x116c4                                               |                 goto label_7;
                                                                             |             }
    0x00011670 ldr r3, [r4, 4]                                               |             r3 = *((r4 + 4));
    0x00011672 subs r2, r3, 1                                                |             r2 = r3 - 1;
    0x00011674 str r2, [r4, 4]                                               |             *((r4 + 4)) = r2;
                                                                             | label_0:
    0x00011676 cmp r3, 1                                                     |             
                                                                             |             if (r3 != 1) {
    0x00011678 bne 0x11698                                                   |                 goto label_6;
                                                                             |             }
    0x0001167a ldr r3, [r4]                                                  |             r3 = *(r4);
    0x0001167c mov r0, r4                                                    |             r0 = r4;
    0x0001167e ldr r3, [r3, 8]                                               |             r3 = *((r3 + 8));
    0x00011680 blx r3                                                        |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00011682 ldrb r3, [r5]                                                 |             r3 = *(r5);
                                                                             |             if (r3 == 0) {
    0x00011684 cbz r3, 0x116e4                                               |                 goto label_8;
                                                                             |             }
    0x00011686 ldr r3, [r4, 8]                                               |             r3 = *((r4 + 8));
    0x00011688 subs r2, r3, 1                                                |             r2 = r3 - 1;
    0x0001168a str r2, [r4, 8]                                               |             *((r4 + 8)) = r2;
                                                                             | label_2:
    0x0001168c cmp r3, 1                                                     |             
                                                                             |             if (r3 != 1) {
    0x0001168e bne 0x11698                                                   |                 goto label_6;
                                                                             |             }
    0x00011690 ldr r3, [r4]                                                  |             r3 = *(r4);
    0x00011692 mov r0, r4                                                    |             r0 = r4;
    0x00011694 ldr r3, [r3, 0xc]                                             |             r3 = *((r3 + 0xc));
    0x00011696 blx r3                                                        |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                             |         }
                                                                             | label_6:
    0x00011698 ldr r0, [sp, 0xc]                                             |         r0 = var_ch;
    0x0001169a cmp r0, r7                                                    |         
                                                                             |         if (r0 != r7) {
    0x0001169c beq 0x116a2                                                   |             
    0x0001169e blx 0xe9a4                                                    |             fcn_0000e9a4 ();
                                                                             |         }
                                                                             | label_3:
    0x000116a2 ldr r2, [pc, 0x8c]                                            |         
    0x000116a4 ldr r3, [pc, 0x78]                                            |         r3 = *(0x11720);
    0x000116a6 add r2, pc                                                    |         r2 = 0x22ddc;
    0x000116a8 ldr r3, [r2, r3]                                              |         r3 = *(0x22ddc);
    0x000116aa ldr r2, [r3]                                                  |         r2 = *(0x22ddc);
    0x000116ac ldr r3, [sp, 0x24]                                            |         r3 = var_24h;
    0x000116ae eors r2, r3                                                   |         r2 ^= r3;
    0x000116b0 mov.w r3, 0                                                   |         r3 = 0;
                                                                             |         if (r2 != r3) {
    0x000116b4 bne 0x11700                                                   |             goto label_9;
                                                                             |         }
    0x000116b6 add sp, 0x2c                                                  |         
    0x000116b8 pop {r4, r5, r6, r7, pc}                                      |         
                                                                             | label_4:
    0x000116ba strd r7, r1, [sp, 0xc]                                        |         __asm ("strd r7, r1, [var_ch]");
    0x000116be strb.w r1, [sp, 0x14]                                         |         var_14h = r1;
    0x000116c2 b 0x11634                                                     |         
                                                                             |     } while (1);
                                                                             | label_7:
    0x000116c4 adds r2, r4, 4                                                |     r2 = r4 + 4;
    0x000116c6 dmb ish                                                       |     __asm ("dmb ish");
                                                                             |     do {
    0x000116ca ldrex r3, [r2]                                                |         __asm ("ldrex r3, [r2]");
    0x000116ce subs r1, r3, 1                                                |         r1 = r3 - 1;
    0x000116d0 strex r0, r1, [r2]                                            |         __asm ("strex r0, r1, [r2]");
    0x000116d4 cmp r0, 0                                                     |         
    0x000116d6 bne 0x116ca                                                   |         
                                                                             |     } while (r0 != 0);
    0x000116d8 dmb ish                                                       |     __asm ("dmb ish");
    0x000116dc b 0x11676                                                     |     goto label_0;
                                                                             | label_5:
    0x000116de add r1, sp, 0xc                                               |     r1 += var_ch;
    0x000116e0 blx r3                                                        |     uint32_t (*r3)(uint32_t) (r1);
    0x000116e2 b 0x11644                                                     |     goto label_1;
                                                                             | label_8:
    0x000116e4 add.w r2, r4, 8                                               |     r2 = r4 + 8;
    0x000116e8 dmb ish                                                       |     __asm ("dmb ish");
                                                                             |     do {
    0x000116ec ldrex r3, [r2]                                                |         __asm ("ldrex r3, [r2]");
    0x000116f0 subs r1, r3, 1                                                |         r1 = r3 - 1;
    0x000116f2 strex r0, r1, [r2]                                            |         __asm ("strex r0, r1, [r2]");
    0x000116f6 cmp r0, 0                                                     |         
    0x000116f8 bne 0x116ec                                                   |         
                                                                             |     } while (r0 != 0);
    0x000116fa dmb ish                                                       |     __asm ("dmb ish");
    0x000116fe b 0x1168c                                                     |     goto label_2;
                                                                             | label_9:
    0x00011700 blx 0xea48                                                    |     fcn_0000ea48 ();
    0x00011704 ldr r0, [sp, 8]                                               |     r0 = var_8h;
                                                                             |     if (r0 == 0) {
    0x00011706 cbz r0, 0x1170c                                               |         goto label_10;
                                                                             |     }
    0x00011708 bl 0x18a84                                                    |     fcn_00018a84 (r0);
                                                                             |     do {
                                                                             | label_10:
    0x0001170c ldr r0, [sp, 0xc]                                             |         r0 = var_ch;
    0x0001170e cmp r0, r7                                                    |         
                                                                             |         if (r0 != r7) {
    0x00011710 beq 0x11716                                                   |             
    0x00011712 blx 0xe9a4                                                    |             fcn_0000e9a4 ();
                                                                             |         }
    0x00011716 blx 0xea54                                                    |         fcn_0000ea54 ();
    0x0001171a b 0x1170c                                                     |         
                                                                             |     } while (1);
                                                                             | }
    ; assembly                                                                                       | /* r2dec pseudo code output */
                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x11734 */
                                                                                                     | #include <stdint.h>
                                                                                                     |  
    ; (fcn) method.mqtt::async_client.on_message_arrived_void__char__int__MQTTAsync_message_ ()      | void method_mqtt::async_client_on_message_arrived_void_char_int_MQTTAsync_message_ (uint32_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                                                                     |     int16_t var_4h;
                                                                                                     |     int16_t var_8h;
                                                                                                     |     int16_t var_ch;
                                                                                                     |     int16_t var_14h;
                                                                                                     |     int16_t var_18h;
                                                                                                     |     int16_t var_1ch;
                                                                                                     |     int16_t var_20h;
                                                                                                     |     int16_t var_24h;
                                                                                                     |     int16_t var_34h;
                                                                                                     |     r0 = arg1;
                                                                                                     |     r1 = arg2;
                                                                                                     |     r2 = arg3;
                                                                                                     |     r3 = arg4;
                                                                                                     |     /* mqtt::async_client::on_message_arrived(void*, char*, int, MQTTAsync_message*) */
    0x00011734 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                           |     
    0x00011738 mov r6, r1                                                                            |     r6 = r1;
    0x0001173a sub sp, 0x3c                                                                          |     
    0x0001173c ldr.w r1, [pc, 0x490]                                                                 |     r1 = *(0x00011bd0);
    0x00011740 str r3, [sp, 0xc]                                                                     |     var_ch = r3;
    0x00011742 ldr.w r3, [pc, 0x490]                                                                 |     
    0x00011746 add r1, pc                                                                            |     r1 += pc;
    0x00011748 ldr.w r8, [pc, 0x48c]                                                                 |     r8 = *(0x00011bd8);
    0x0001174c ldr r3, [r1, r3]                                                                      |     r3 = *((r1 + r3));
    0x0001174e add r8, pc                                                                            |     r8 += pc;
    0x00011750 ldr r3, [r3]                                                                          |     r3 = *(0x11bd6);
    0x00011752 str r3, [sp, 0x34]                                                                    |     var_34h = r3;
    0x00011754 mov.w r3, 0                                                                           |     r3 = 0;
    0x00011758 cmp r0, 0                                                                             |     
                                                                                                     |     if (r0 == 0) {
    0x0001175a beq 0x11852                                                                           |         goto label_1;
                                                                                                     |     }
    0x0001175c ldr r3, [r0, 0x58]                                                                    |     r3 = *((r0 + 0x58));
    0x0001175e mov r5, r0                                                                            |     r5 = r0;
    0x00011760 str r3, [sp, 4]                                                                       |     var_4h = r3;
    0x00011762 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x00011764 beq.w 0x11886                                                                         |         goto label_23;
                                                                                                     |     }
                                                                                                     | label_0:
    0x00011768 cmp r2, 0                                                                             |     
    0x0001176a beq.w 0x1187c                                                                         |     
                                                                                                     |     while (1) {
                                                                                                     | label_2:
    0x0001176e add r0, sp, 0x1c                                                                      |         r0 += var_1ch;
    0x00011770 add r2, r6                                                                            |         r2 += r6;
    0x00011772 add.w sb, sp, 0x24                                                                    |         sb += var_24h;
    0x00011776 mov r1, r6                                                                            |         r1 = r6;
    0x00011778 str.w sb, [sp, 0x1c]                                                                  |         __asm ("str.w sb, [var_1ch]");
    0x0001177c bl 0xf5b8                                                                             |         fcn_0000f5b8 (r0, r1, r2);
    0x00011780 movs r0, 0x24                                                                         |         r0 = 0x24;
    0x00011782 blx 0xe5ec                                                                            |         fcn_0000e5ec ();
    0x00011786 ldr.w r3, [pc, 0x454]                                                                 |         r3 = *(0x11bde);
    0x0001178a movs r2, 1                                                                            |         r2 = 1;
    0x0001178c strd r2, r2, [r0, 4]                                                                  |         __asm ("strd r2, r2, [r0, 4]");
    0x00011790 mov sl, r0                                                                            |         sl = r0;
    0x00011792 ldr r2, [sp, 0x1c]                                                                    |         r2 = var_1ch;
    0x00011794 add.w r4, r0, 0x14                                                                    |         r4 = r0 + 0x14;
    0x00011798 ldr.w r3, [r8, r3]                                                                    |         r3 = *((r8 + r3));
    0x0001179c mov r7, r0                                                                            |         r7 = r0;
    0x0001179e cmp r2, sb                                                                            |         
    0x000117a0 add.w r3, r3, 8                                                                       |         r3 += 8;
    0x000117a4 str r3, [sl], 0xc                                                                     |         *(sl) = r3;
                                                                                                     |         sl += 0xc;
    0x000117a8 str r4, [r0, 0xc]                                                                     |         *((r0 + 0xc)) = r4;
                                                                                                     |         if (r2 == sb) {
    0x000117aa beq.w 0x11a6e                                                                         |             goto label_24;
                                                                                                     |         }
    0x000117ae ldr r3, [sp, 0x24]                                                                    |         r3 = var_24h;
    0x000117b0 str r2, [r0, 0xc]                                                                     |         *((r0 + 0xc)) = r2;
    0x000117b2 str r3, [r0, 0x14]                                                                    |         *((r0 + 0x14)) = r3;
                                                                                                     | label_12:
    0x000117b4 ldr r3, [sp, 0x20]                                                                    |         r3 = var_20h;
    0x000117b6 movs r0, 0x5c                                                                         |         r0 = 0x5c;
    0x000117b8 ldr r4, [sp, 0xc]                                                                     |         r4 = var_ch;
    0x000117ba str.w sb, [sp, 0x1c]                                                                  |         __asm ("str.w sb, [var_1ch]");
    0x000117be str r3, [r7, 0x10]                                                                    |         *((r7 + 0x10)) = r3;
    0x000117c0 movs r3, 0                                                                            |         r3 = 0;
    0x000117c2 str r3, [sp, 0x20]                                                                    |         var_20h = r3;
    0x000117c4 strb.w r3, [sp, 0x24]                                                                 |         var_24h = r3;
    0x000117c8 blx 0xe5ec                                                                            |         fcn_0000e5ec ();
    0x000117cc ldr.w r3, [pc, 0x410]                                                                 |         r3 = *(0x11be0);
    0x000117d0 movs r1, 1                                                                            |         r1 = 1;
    0x000117d2 strd r1, r1, [r0, 4]                                                                  |         __asm ("strd r1, r1, [r0, 4]");
    0x000117d6 add.w fp, sp, 0x14                                                                    |         
    0x000117da mov r2, r4                                                                            |         r2 = r4;
    0x000117dc mov r1, fp                                                                            |         r1 = fp;
    0x000117de ldr.w r3, [r8, r3]                                                                    |         r3 = *((r8 + r3));
    0x000117e2 mov r4, r0                                                                            |         r4 = r0;
    0x000117e4 strd sl, r7, [sp, 0x14]                                                               |         __asm ("strd sl, r7, [var_18h]");
    0x000117e8 mov sl, r0                                                                            |         sl = r0;
    0x000117ea adds r3, 8                                                                            |         r3 += 8;
    0x000117ec str r3, [sl], 0xc                                                                     |         *(sl) = r3;
                                                                                                     |         sl += 0xc;
    0x000117f0 mov r0, sl                                                                            |         r0 = sl;
    0x000117f2 blx 0xebe8                                                                            |         strlen (r0);
    0x000117f6 ldr r3, [pc, 0x3ec]                                                                   |         r3 = *(0x11be6);
    0x000117f8 ldr r0, [sp, 0x18]                                                                    |         r0 = var_18h;
    0x000117fa ldr.w r7, [r8, r3]                                                                    |         r7 = *((r8 + r3));
    0x000117fe ldrb r3, [r7]                                                                         |         r3 = *(r7);
                                                                                                     |         if (r0 != 0) {
    0x00011800 cbz r0, 0x11814                                                                       |             
    0x00011802 cmp r3, 0                                                                             |             
                                                                                                     |             if (r3 == 0) {
    0x00011804 beq.w 0x11aa0                                                                         |                 goto label_25;
                                                                                                     |             }
    0x00011808 ldr r3, [r0, 4]                                                                       |             r3 = *((r0 + 4));
    0x0001180a subs r2, r3, 1                                                                        |             r2 = r3 - 1;
    0x0001180c str r2, [r0, 4]                                                                       |             *((r0 + 4)) = r2;
                                                                                                     | label_14:
    0x0001180e cmp r3, 1                                                                             |             
                                                                                                     |             if (r3 == 1) {
    0x00011810 beq.w 0x11a14                                                                         |                 goto label_26;
                                                                                                     |             }
                                                                                                     |         }
                                                                                                     | label_9:
    0x00011814 ldr.w r3, [r5, 0xa4]                                                                  |         r3 = *((r5 + 0xa4));
    0x00011818 adds r1, r4, 4                                                                        |         r1 = r4 + 4;
    0x0001181a ldrb r2, [r7]                                                                         |         r2 = *(r7);
    0x0001181c str r1, [sp, 8]                                                                       |         var_8h = r1;
    0x0001181e cmp r3, 0                                                                             |         
                                                                                                     |         if (r3 != 0) {
    0x00011820 bne 0x118a0                                                                           |             goto label_27;
                                                                                                     |         }
                                                                                                     | label_6:
    0x00011822 ldr r2, [sp, 4]                                                                       |         r2 = var_4h;
    0x00011824 ldrb r3, [r7]                                                                         |         r3 = *(r7);
    0x00011826 cmp r2, 0                                                                             |         
                                                                                                     |         if (r2 != 0) {
    0x00011828 bne 0x118b0                                                                           |             goto label_28;
                                                                                                     |         }
                                                                                                     | label_4:
    0x0001182a ldr.w r0, [r5, 0xcc]                                                                  |         r0 = *((r5 + 0xcc));
    0x0001182e ldrb r3, [r7]                                                                         |         r3 = *(r7);
    0x00011830 cmp r0, 0                                                                             |         
                                                                                                     |         if (r0 != 0) {
    0x00011832 bne 0x11904                                                                           |             goto label_29;
                                                                                                     |         }
                                                                                                     | label_5:
    0x00011834 ldrb r3, [r7]                                                                         |         r3 = *(r7);
    0x00011836 cmp r3, 0                                                                             |         
                                                                                                     |         if (r3 == 0) {
    0x00011838 beq.w 0x11abc                                                                         |             goto label_30;
                                                                                                     |         }
    0x0001183c ldr r3, [r4, 4]                                                                       |         r3 = *((r4 + 4));
    0x0001183e subs r2, r3, 1                                                                        |         r2 = r3 - 1;
    0x00011840 str r2, [r4, 4]                                                                       |         *((r4 + 4)) = r2;
                                                                                                     | label_15:
    0x00011842 cmp r3, 1                                                                             |         
                                                                                                     |         if (r3 == 1) {
    0x00011844 beq.w 0x11a7e                                                                         |             goto label_31;
                                                                                                     |         }
                                                                                                     | label_13:
    0x00011848 ldr r0, [sp, 0x1c]                                                                    |         r0 = var_1ch;
    0x0001184a cmp r0, sb                                                                            |         
                                                                                                     |         if (r0 != sb) {
    0x0001184c beq 0x11852                                                                           |             
    0x0001184e blx 0xe9a4                                                                            |             fcn_0000e9a4 ();
                                                                                                     |         }
                                                                                                     | label_1:
    0x00011852 add r0, sp, 0xc                                                                       |         r0 += var_ch;
    0x00011854 blx 0xe890                                                                            |         fcn_0000e890 ();
    0x00011858 mov r0, r6                                                                            |         r0 = r6;
    0x0001185a blx 0xea84                                                                            |         fcn_0000ea84 ();
    0x0001185e ldr r2, [pc, 0x388]                                                                   |         
    0x00011860 ldr r3, [pc, 0x370]                                                                   |         r3 = *(0x11bd4);
    0x00011862 add r2, pc                                                                            |         r2 = 0x23450;
    0x00011864 ldr r3, [r2, r3]                                                                      |         r3 = *(0x23450);
    0x00011866 ldr r2, [r3]                                                                          |         r2 = *(0x23450);
    0x00011868 ldr r3, [sp, 0x34]                                                                    |         r3 = var_34h;
    0x0001186a eors r2, r3                                                                           |         r2 ^= r3;
    0x0001186c mov.w r3, 0                                                                           |         r3 = 0;
                                                                                                     |         if (r2 != r3) {
    0x00011870 bne.w 0x11b8a                                                                         |             goto label_32;
                                                                                                     |         }
    0x00011874 movs r0, 1                                                                            |         r0 = 1;
    0x00011876 add sp, 0x3c                                                                          |         
    0x00011878 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                            |         
                                                                                                     | label_3:
    0x0001187c mov r0, r6                                                                            |         r0 = r6;
    0x0001187e blx 0xec10                                                                            |         r0 = fcn_0000ec10 ();
    0x00011882 mov r2, r0                                                                            |         r2 = r0;
    0x00011884 b 0x1176e                                                                             |         
                                                                                                     |     }
                                                                                                     | label_23:
    0x00011886 ldr.w r3, [r0, 0xcc]                                                                  |     r3 = *((r0 + 0xcc));
    0x0001188a cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 != 0) {
    0x0001188c bne.w 0x11768                                                                         |         goto label_0;
                                                                                                     |     }
    0x00011890 ldr.w r3, [r0, 0xa4]                                                                  |     r3 = *((r0 + 0xa4));
    0x00011894 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x00011896 beq 0x11852                                                                           |         goto label_1;
                                                                                                     |     }
    0x00011898 cmp r2, 0                                                                             |     
                                                                                                     |     if (r2 != 0) {
    0x0001189a bne.w 0x1176e                                                                         |         goto label_2;
                                                                                                     |     }
    0x0001189e b 0x1187c                                                                             |     goto label_3;
                                                                                                     | label_27:
    0x000118a0 strd sl, r4, [sp, 0x14]                                                               |     __asm ("strd sl, r4, [var_18h]");
    0x000118a4 cmp r2, 0                                                                             |     
                                                                                                     |     if (r2 == 0) {
    0x000118a6 beq 0x11958                                                                           |         goto label_33;
                                                                                                     |     }
    0x000118a8 ldr r3, [r4, 4]                                                                       |     r3 = *((r4 + 4));
    0x000118aa adds r3, 1                                                                            |     r3++;
    0x000118ac str r3, [r4, 4]                                                                       |     *((r4 + 4)) = r3;
    0x000118ae b 0x1197a                                                                             |     goto label_34;
                                                                                                     | label_28:
    0x000118b0 ldr r2, [sp, 4]                                                                       |     r2 = var_4h;
    0x000118b2 ldr r2, [r2]                                                                          |     r2 = *(r2);
    0x000118b4 ldr r2, [r2, 0x10]                                                                    |     r2 = *((r2 + 0x10));
    0x000118b6 strd sl, r4, [sp, 0x14]                                                               |     __asm ("strd sl, r4, [var_18h]");
    0x000118ba cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x000118bc beq.w 0x119c6                                                                         |         goto label_35;
                                                                                                     |     }
    0x000118c0 ldr r3, [r4, 4]                                                                       |     r3 = *((r4 + 4));
    0x000118c2 adds r3, 1                                                                            |     r3++;
    0x000118c4 str r3, [r4, 4]                                                                       |     *((r4 + 4)) = r3;
    0x000118c6 ldr r3, [pc, 0x324]                                                                   |     r3 = *(0x11bee);
    0x000118c8 ldr.w r3, [r8, r3]                                                                    |     r3 = *((r8 + r3));
    0x000118cc cmp r2, r3                                                                            |     
    0x000118ce it eq                                                                                 |     
                                                                                                     |     if (r2 != r3) {
    0x000118d0 moveq r0, r4                                                                          |         r0 = r4;
                                                                                                     |     }
                                                                                                     |     if (r2 != r3) {
    0x000118d2 bne.w 0x11ad6                                                                         |         goto label_36;
                                                                                                     |     }
                                                                                                     | label_7:
    0x000118d6 ldr r3, [r0, 4]                                                                       |     r3 = *((r0 + 4));
    0x000118d8 subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x000118da str r2, [r0, 4]                                                                       |     *((r0 + 4)) = r2;
                                                                                                     | label_8:
    0x000118dc cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x000118de bne 0x1182a                                                                           |         goto label_4;
                                                                                                     |     }
    0x000118e0 ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x000118e2 str r0, [sp, 4]                                                                       |     var_4h = r0;
    0x000118e4 ldr r3, [r3, 8]                                                                       |     r3 = *((r3 + 8));
    0x000118e6 blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000118e8 ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x000118ea ldr r0, [sp, 4]                                                                       |     r0 = var_4h;
    0x000118ec cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x000118ee beq.w 0x11b32                                                                         |         goto label_37;
                                                                                                     |     }
    0x000118f2 ldr r3, [r0, 8]                                                                       |     r3 = *((r0 + 8));
    0x000118f4 subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x000118f6 str r2, [r0, 8]                                                                       |     *((r0 + 8)) = r2;
                                                                                                     | label_20:
    0x000118f8 cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x000118fa bne 0x1182a                                                                           |         goto label_4;
                                                                                                     |     }
    0x000118fc ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x000118fe ldr r3, [r3, 0xc]                                                                     |     r3 = *((r3 + 0xc));
    0x00011900 blx r3                                                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x00011902 b 0x1182a                                                                             |     goto label_4;
                                                                                                     | label_29:
    0x00011904 strd sl, r4, [sp, 0x14]                                                               |     __asm ("strd sl, r4, [var_18h]");
    0x00011908 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x0001190a beq.w 0x11a38                                                                         |         goto label_38;
                                                                                                     |     }
    0x0001190e ldr r3, [r4, 4]                                                                       |     r3 = *((r4 + 4));
    0x00011910 adds r3, 1                                                                            |     r3++;
    0x00011912 str r3, [r4, 4]                                                                       |     *((r4 + 4)) = r3;
                                                                                                     | label_10:
    0x00011914 mov r1, fp                                                                            |     r1 = fp;
    0x00011916 bl 0x18704                                                                            |     fcn_00018704 (r0, r1);
    0x0001191a ldr r5, [sp, 0x18]                                                                    |     r5 = var_18h;
    0x0001191c ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x0001191e cmp r5, 0                                                                             |     
                                                                                                     |     if (r5 == 0) {
    0x00011920 beq 0x11834                                                                           |         goto label_5;
                                                                                                     |     }
    0x00011922 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x00011924 beq.w 0x11ade                                                                         |         goto label_39;
                                                                                                     |     }
    0x00011928 ldr r3, [r5, 4]                                                                       |     r3 = *((r5 + 4));
    0x0001192a subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x0001192c str r2, [r5, 4]                                                                       |     *((r5 + 4)) = r2;
                                                                                                     | label_17:
    0x0001192e cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x00011930 bne 0x11834                                                                           |         goto label_5;
                                                                                                     |     }
    0x00011932 ldr r3, [r5]                                                                          |     r3 = *(r5);
    0x00011934 mov r0, r5                                                                            |     r0 = r5;
    0x00011936 ldr r3, [r3, 8]                                                                       |     r3 = *((r3 + 8));
    0x00011938 blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001193a ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x0001193c cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x0001193e beq.w 0x11b50                                                                         |         goto label_40;
                                                                                                     |     }
    0x00011942 ldr r3, [r5, 8]                                                                       |     r3 = *((r5 + 8));
    0x00011944 subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x00011946 str r2, [r5, 8]                                                                       |     *((r5 + 8)) = r2;
                                                                                                     | label_21:
    0x00011948 cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x0001194a bne.w 0x11834                                                                         |         goto label_5;
                                                                                                     |     }
    0x0001194e ldr r3, [r5]                                                                          |     r3 = *(r5);
    0x00011950 mov r0, r5                                                                            |     r0 = r5;
    0x00011952 ldr r3, [r3, 0xc]                                                                     |     r3 = *((r3 + 0xc));
    0x00011954 blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00011956 b 0x11834                                                                             |     goto label_5;
                                                                                                     | label_33:
    0x00011958 adds r1, r4, 4                                                                        |     r1 = r4 + 4;
    0x0001195a dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x0001195e ldrex r3, [r1]                                                                        |         __asm ("ldrex r3, [r1]");
    0x00011962 adds r3, 1                                                                            |         r3++;
    0x00011964 strex r2, r3, [r1]                                                                    |         __asm ("strex r2, r3, [r1]");
    0x00011968 cmp r2, 0                                                                             |         
    0x0001196a bne 0x1195e                                                                           |         
                                                                                                     |     } while (r2 != 0);
    0x0001196c dmb ish                                                                               |     __asm ("dmb ish");
    0x00011970 ldr.w r3, [r5, 0xa4]                                                                  |     r3 = *((r5 + 0xa4));
    0x00011974 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x00011976 beq.w 0x11b8e                                                                         |         goto label_41;
                                                                                                     |     }
                                                                                                     | label_34:
    0x0001197a ldr.w r3, [r5, 0xa8]                                                                  |     r3 = *((r5 + 0xa8));
    0x0001197e mov r1, fp                                                                            |     r1 = fp;
    0x00011980 add.w r0, r5, 0x9c                                                                    |     r0 = r5 + 0x9c;
    0x00011984 blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00011986 ldr r0, [sp, 0x18]                                                                    |     r0 = var_18h;
    0x00011988 ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x0001198a cmp r0, 0                                                                             |     
                                                                                                     |     if (r0 == 0) {
    0x0001198c beq.w 0x11822                                                                         |         goto label_6;
                                                                                                     |     }
    0x00011990 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x00011992 beq 0x11a52                                                                           |         goto label_42;
                                                                                                     |     }
    0x00011994 ldr r3, [r0, 4]                                                                       |     r3 = *((r0 + 4));
    0x00011996 subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x00011998 str r2, [r0, 4]                                                                       |     *((r0 + 4)) = r2;
                                                                                                     | label_11:
    0x0001199a cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x0001199c bne.w 0x11822                                                                         |         goto label_6;
                                                                                                     |     }
    0x000119a0 ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x000119a2 str r0, [sp, 8]                                                                       |     var_8h = r0;
    0x000119a4 ldr r3, [r3, 8]                                                                       |     r3 = *((r3 + 8));
    0x000119a6 blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000119a8 ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x000119aa ldr r0, [sp, 8]                                                                       |     r0 = var_8h;
    0x000119ac cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x000119ae beq.w 0x11b6c                                                                         |         goto label_43;
                                                                                                     |     }
    0x000119b2 ldr r3, [r0, 8]                                                                       |     r3 = *((r0 + 8));
    0x000119b4 subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x000119b6 str r2, [r0, 8]                                                                       |     *((r0 + 8)) = r2;
                                                                                                     | label_22:
    0x000119b8 cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x000119ba bne.w 0x11822                                                                         |         goto label_6;
                                                                                                     |     }
    0x000119be ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x000119c0 ldr r3, [r3, 0xc]                                                                     |     r3 = *((r3 + 0xc));
    0x000119c2 blx r3                                                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x000119c4 b 0x11822                                                                             |     goto label_6;
                                                                                                     | label_35:
    0x000119c6 adds r0, r4, 4                                                                        |     r0 = r4 + 4;
    0x000119c8 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x000119cc ldrex r3, [r0]                                                                        |         __asm ("ldrex r3, [r0]");
    0x000119d0 adds r3, 1                                                                            |         r3++;
    0x000119d2 strex r1, r3, [r0]                                                                    |         __asm ("strex r1, r3, [r0]");
    0x000119d6 cmp r1, 0                                                                             |         
    0x000119d8 bne 0x119cc                                                                           |         
                                                                                                     |     } while (r1 != 0);
    0x000119da ldr r3, [pc, 0x210]                                                                   |     r3 = *(0x11bee);
    0x000119dc dmb ish                                                                               |     __asm ("dmb ish");
    0x000119e0 ldr.w r3, [r8, r3]                                                                    |     r3 = *((r8 + r3));
    0x000119e4 cmp r2, r3                                                                            |     
                                                                                                     |     if (r2 != r3) {
    0x000119e6 bne 0x11ad6                                                                           |         goto label_36;
                                                                                                     |     }
                                                                                                     | label_16:
    0x000119e8 ldr r0, [sp, 0x18]                                                                    |     r0 = var_18h;
    0x000119ea ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x000119ec cmp r0, 0                                                                             |     
                                                                                                     |     if (r0 == 0) {
    0x000119ee beq.w 0x1182a                                                                         |         goto label_4;
                                                                                                     |     }
    0x000119f2 adds r2, r0, 4                                                                        |     r2 = r0 + 4;
    0x000119f4 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 != 0) {
    0x000119f6 bne.w 0x118d6                                                                         |         goto label_7;
                                                                                                     |     }
    0x000119fa dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x000119fe ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011a02 subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011a04 strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00011a08 cmp.w ip, 0                                                                           |         
    0x00011a0c bne 0x119fe                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00011a0e dmb ish                                                                               |     __asm ("dmb ish");
    0x00011a12 b 0x118dc                                                                             |     goto label_8;
                                                                                                     | label_26:
    0x00011a14 ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x00011a16 str r0, [sp, 8]                                                                       |     var_8h = r0;
    0x00011a18 ldr r3, [r3, 8]                                                                       |     r3 = *((r3 + 8));
    0x00011a1a blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00011a1c ldrb r3, [r7]                                                                         |     r3 = *(r7);
    0x00011a1e ldr r0, [sp, 8]                                                                       |     r0 = var_8h;
    0x00011a20 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 == 0) {
    0x00011a22 beq 0x11b14                                                                           |         goto label_44;
                                                                                                     |     }
    0x00011a24 ldr r3, [r0, 8]                                                                       |     r3 = *((r0 + 8));
    0x00011a26 subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x00011a28 str r2, [r0, 8]                                                                       |     *((r0 + 8)) = r2;
                                                                                                     | label_19:
    0x00011a2a cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x00011a2c bne.w 0x11814                                                                         |         goto label_9;
                                                                                                     |     }
    0x00011a30 ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x00011a32 ldr r3, [r3, 0xc]                                                                     |     r3 = *((r3 + 0xc));
    0x00011a34 blx r3                                                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x00011a36 b 0x11814                                                                             |     goto label_9;
                                                                                                     | label_38:
    0x00011a38 adds r1, r4, 4                                                                        |     r1 = r4 + 4;
    0x00011a3a dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011a3e ldrex r3, [r1]                                                                        |         __asm ("ldrex r3, [r1]");
    0x00011a42 adds r3, 1                                                                            |         r3++;
    0x00011a44 strex r2, r3, [r1]                                                                    |         __asm ("strex r2, r3, [r1]");
    0x00011a48 cmp r2, 0                                                                             |         
    0x00011a4a bne 0x11a3e                                                                           |         
                                                                                                     |     } while (r2 != 0);
    0x00011a4c dmb ish                                                                               |     __asm ("dmb ish");
    0x00011a50 b 0x11914                                                                             |     goto label_10;
                                                                                                     | label_42:
    0x00011a52 adds r2, r0, 4                                                                        |     r2 = r0 + 4;
    0x00011a54 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011a58 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011a5c subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011a5e strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00011a62 cmp.w ip, 0                                                                           |         
    0x00011a66 bne 0x11a58                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00011a68 dmb ish                                                                               |     __asm ("dmb ish");
    0x00011a6c b 0x1199a                                                                             |     goto label_11;
                                                                                                     | label_24:
    0x00011a6e mov ip, sb                                                                            |     
    0x00011a70 ldm.w ip!, {r0, r1, r2, r3}                                                           |     r0 = *(ip!);
                                                                                                     |     r1 = *((ip! + 4));
                                                                                                     |     r2 = *((ip! + 8));
                                                                                                     |     r3 = *((ip! + 12));
    0x00011a74 str r0, [r7, 0x14]                                                                    |     *((r7 + 0x14)) = r0;
    0x00011a76 str r1, [r7, 0x18]                                                                    |     *((r7 + 0x18)) = r1;
    0x00011a78 str r2, [r7, 0x1c]                                                                    |     *((r7 + 0x1c)) = r2;
    0x00011a7a str r3, [r7, 0x20]                                                                    |     *((r7 + 0x20)) = r3;
    0x00011a7c b 0x117b4                                                                             |     goto label_12;
                                                                                                     | label_31:
    0x00011a7e ldr r3, [r4]                                                                          |     r3 = *(r4);
    0x00011a80 mov r0, r4                                                                            |     r0 = r4;
    0x00011a82 ldr r3, [r3, 8]                                                                       |     r3 = *((r3 + 8));
    0x00011a84 blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00011a86 ldrb r3, [r7]                                                                         |     r3 = *(r7);
                                                                                                     |     if (r3 == 0) {
    0x00011a88 cbz r3, 0x11af8                                                                       |         goto label_45;
                                                                                                     |     }
    0x00011a8a ldr r3, [r4, 8]                                                                       |     r3 = *((r4 + 8));
    0x00011a8c subs r2, r3, 1                                                                        |     r2 = r3 - 1;
    0x00011a8e str r2, [r4, 8]                                                                       |     *((r4 + 8)) = r2;
                                                                                                     | label_18:
    0x00011a90 cmp r3, 1                                                                             |     
                                                                                                     |     if (r3 != 1) {
    0x00011a92 bne.w 0x11848                                                                         |         goto label_13;
                                                                                                     |     }
    0x00011a96 ldr r3, [r4]                                                                          |     r3 = *(r4);
    0x00011a98 mov r0, r4                                                                            |     r0 = r4;
    0x00011a9a ldr r3, [r3, 0xc]                                                                     |     r3 = *((r3 + 0xc));
    0x00011a9c blx r3                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00011a9e b 0x11848                                                                             |     goto label_13;
                                                                                                     | label_25:
    0x00011aa0 adds r2, r0, 4                                                                        |     r2 = r0 + 4;
    0x00011aa2 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011aa6 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011aaa subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011aac strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00011ab0 cmp.w ip, 0                                                                           |         
    0x00011ab4 bne 0x11aa6                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00011ab6 dmb ish                                                                               |     __asm ("dmb ish");
    0x00011aba b 0x1180e                                                                             |     goto label_14;
                                                                                                     | label_30:
    0x00011abc adds r0, r4, 4                                                                        |     r0 = r4 + 4;
    0x00011abe dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011ac2 ldrex r3, [r0]                                                                        |         __asm ("ldrex r3, [r0]");
    0x00011ac6 subs r2, r3, 1                                                                        |         r2 = r3 - 1;
    0x00011ac8 strex r1, r2, [r0]                                                                    |         __asm ("strex r1, r2, [r0]");
    0x00011acc cmp r1, 0                                                                             |         
    0x00011ace bne 0x11ac2                                                                           |         
                                                                                                     |     } while (r1 != 0);
    0x00011ad0 dmb ish                                                                               |     __asm ("dmb ish");
    0x00011ad4 b 0x11842                                                                             |     goto label_15;
                                                                                                     | label_36:
    0x00011ad6 ldr r0, [sp, 4]                                                                       |     r0 = var_4h;
    0x00011ad8 mov r1, fp                                                                            |     r1 = fp;
    0x00011ada blx r2                                                                                |     uint32_t (*r2)(uint32_t, uint32_t) (r0, r1);
    0x00011adc b 0x119e8                                                                             |     goto label_16;
                                                                                                     | label_39:
    0x00011ade adds r2, r5, 4                                                                        |     r2 = r5 + 4;
    0x00011ae0 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011ae4 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011ae8 subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011aea strex r0, r1, [r2]                                                                    |         __asm ("strex r0, r1, [r2]");
    0x00011aee cmp r0, 0                                                                             |         
    0x00011af0 bne 0x11ae4                                                                           |         
                                                                                                     |     } while (r0 != 0);
    0x00011af2 dmb ish                                                                               |     __asm ("dmb ish");
    0x00011af6 b 0x1192e                                                                             |     goto label_17;
                                                                                                     | label_45:
    0x00011af8 add.w r2, r4, 8                                                                       |     r2 = r4 + 8;
    0x00011afc dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011b00 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011b04 subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011b06 strex r0, r1, [r2]                                                                    |         __asm ("strex r0, r1, [r2]");
    0x00011b0a cmp r0, 0                                                                             |         
    0x00011b0c bne 0x11b00                                                                           |         
                                                                                                     |     } while (r0 != 0);
    0x00011b0e dmb ish                                                                               |     __asm ("dmb ish");
    0x00011b12 b 0x11a90                                                                             |     goto label_18;
                                                                                                     | label_44:
    0x00011b14 add.w r2, r0, 8                                                                       |     r2 = r0 + 8;
    0x00011b18 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011b1c ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011b20 subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011b22 strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00011b26 cmp.w ip, 0                                                                           |         
    0x00011b2a bne 0x11b1c                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00011b2c dmb ish                                                                               |     __asm ("dmb ish");
    0x00011b30 b 0x11a2a                                                                             |     goto label_19;
                                                                                                     | label_37:
    0x00011b32 add.w r2, r0, 8                                                                       |     r2 = r0 + 8;
    0x00011b36 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011b3a ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011b3e subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011b40 strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00011b44 cmp.w ip, 0                                                                           |         
    0x00011b48 bne 0x11b3a                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00011b4a dmb ish                                                                               |     __asm ("dmb ish");
    0x00011b4e b 0x118f8                                                                             |     goto label_20;
                                                                                                     | label_40:
    0x00011b50 add.w r2, r5, 8                                                                       |     r2 = r5 + 8;
    0x00011b54 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011b58 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011b5c subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011b5e strex r0, r1, [r2]                                                                    |         __asm ("strex r0, r1, [r2]");
    0x00011b62 cmp r0, 0                                                                             |         
    0x00011b64 bne 0x11b58                                                                           |         
                                                                                                     |     } while (r0 != 0);
    0x00011b66 dmb ish                                                                               |     __asm ("dmb ish");
    0x00011b6a b 0x11948                                                                             |     goto label_21;
                                                                                                     | label_43:
    0x00011b6c add.w r2, r0, 8                                                                       |     r2 = r0 + 8;
    0x00011b70 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00011b74 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00011b78 subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00011b7a strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00011b7e cmp.w ip, 0                                                                           |         
    0x00011b82 bne 0x11b74                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00011b84 dmb ish                                                                               |     __asm ("dmb ish");
    0x00011b88 b 0x119b8                                                                             |     goto label_22;
                                                                                                     | label_32:
    0x00011b8a blx 0xea48                                                                            |     fcn_0000ea48 ();
                                                                                                     | label_41:
    0x00011b8e blx 0xe6c8                                                                            |     fcn_0000e6c8 ();
    0x00011b92 ldr r0, [sp, 0x18]                                                                    |     r0 = var_18h;
                                                                                                     |     if (r0 != 0) {
    0x00011b94 cbz r0, 0x11b9a                                                                       |         
    0x00011b96 bl 0x18a84                                                                            |         fcn_00018a84 (r0);
                                                                                                     |     }
    0x00011b9a mov r0, r4                                                                            |     r0 = r4;
    0x00011b9c bl 0x18a84                                                                            |     fcn_00018a84 (r0);
    0x00011ba0 b 0x11bac                                                                             |     
                                                                                                     |     while (1) {
    0x00011ba6 mov r0, r4                                                                            |         r0 = r4;
    0x00011ba8 blx 0xe9a4                                                                            |         fcn_0000e9a4 ();
    0x00011bac ldr r0, [sp, 0x1c]                                                                    |         r0 = var_1ch;
    0x00011bae cmp r0, sb                                                                            |         
                                                                                                     |         if (r0 != sb) {
    0x00011bb0 beq 0x11bb6                                                                           |             
    0x00011bb2 blx 0xe9a4                                                                            |             fcn_0000e9a4 ();
                                                                                                     |         }
    0x00011bb6 blx 0xea54                                                                            |         fcn_0000ea54 ();
    0x00011bba bl 0x18a84                                                                            |         fcn_00018a84 (r0);
    0x00011bbe b 0x11ba6                                                                             |         
                                                                                                     |     }
                                                                                                     | }
    ; assembly                                                                               | /* r2dec pseudo code output */
                                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x15378 */
                                                                                             | #include <stdint.h>
                                                                                             |  
    ; (fcn) method.mqtt::async_client.publish_std::shared_ptr_mqtt::message_const__ ()       | void method_mqtt::async_client_publish_std::shared_ptr_mqtt::message_const_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                             |     int16_t var_0h;
                                                                                             |     int16_t var_4h;
                                                                                             |     int16_t var_8h;
                                                                                             |     int16_t var_ch;
                                                                                             |     int16_t var_10h;
                                                                                             |     int16_t var_14h;
                                                                                             |     int16_t var_18h;
                                                                                             |     int16_t var_2ch;
                                                                                             |     int16_t var_60h;
                                                                                             |     int16_t var_64h;
                                                                                             |     r0 = arg1;
                                                                                             |     r1 = arg2;
                                                                                             |     r2 = arg3;
                                                                                             |     /* mqtt::async_client::publish(std::shared_ptr<qtt::message const>) */
    0x00015378 ldr r3, [r1]                                                                  |     r3 = *(r1);
    0x0001537a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                   |     
    0x0001537e mov r7, r1                                                                    |     r7 = r1;
    0x00015380 sub sp, 0x6c                                                                  |     
    0x00015382 ldr.w r1, [pc, 0x500]                                                         |     
    0x00015386 mov r4, r2                                                                    |     r4 = r2;
    0x00015388 mov r6, r0                                                                    |     r6 = r0;
    0x0001538a str r2, [sp, 4]                                                               |     var_4h = r2;
    0x0001538c ldr r3, [r3, -0x94]                                                           |     r3 = *((r3 - 0x94));
    0x00015390 add r1, pc                                                                    |     r1 = 0x2ac1a;
    0x00015392 ldr.w r2, [pc, 0x4f4]                                                         |     r2 = *(0x1588a);
    0x00015396 ldr.w r5, [pc, 0x4f4]                                                         |     r5 = *(0x0001588c);
    0x0001539a ldr r2, [r1, r2]                                                              |     
    0x0001539c adds r1, r7, r3                                                               |     r1 = r7 + r3;
    0x0001539e ldrd r3, r8, [r4]                                                             |     __asm ("ldrd r3, r8, [r4]");
    0x000153a2 add r5, pc                                                                    |     r5 += pc;
    0x000153a4 ldr r2, [r2]                                                                  |     r2 = *(0x2ac1a);
    0x000153a6 str r2, [sp, 0x64]                                                            |     var_64h = r2;
    0x000153a8 mov.w r2, 0                                                                   |     r2 = 0;
    0x000153ac str r1, [sp, 0xc]                                                             |     var_ch = r1;
    0x000153ae str r3, [sp]                                                                  |     *(sp) = r3;
    0x000153b0 cmp.w r8, 0                                                                   |     
                                                                                             |     if (r8 != 0) {
    0x000153b4 beq 0x153d2                                                                   |         
    0x000153b6 ldr.w r3, [pc, 0x4d8]                                                         |         r3 = *(0x15892);
    0x000153ba ldr.w sb, [r5, r3]                                                            |         sb = *((r5 + r3));
    0x000153be ldrb.w r3, [sb]                                                               |         r3 = *(sb);
    0x000153c2 cmp r3, 0                                                                     |         
                                                                                             |         if (r3 == 0) {
    0x000153c4 beq.w 0x1562a                                                                 |             goto label_17;
                                                                                             |         }
    0x000153c8 ldr.w r3, [r8, 4]                                                             |         r3 = *((r8 + 4));
    0x000153cc adds r3, 1                                                                    |         r3++;
    0x000153ce str.w r3, [r8, 4]                                                             |         __asm ("str.w r3, [r8, 4]");
                                                                                             |     }
                                                                                             | label_4:
    0x000153d2 movs r3, 0                                                                    |     r3 = 0;
    0x000153d4 movs r0, 0xb8                                                                 |     r0 = 0xb8;
    0x000153d6 str r3, [r6]                                                                  |     *(r6) = r3;
    0x000153d8 blx 0xe5ec                                                                    |     fcn_0000e5ec ();
    0x000153dc ldr.w r3, [pc, 0x4b4]                                                         |     r3 = *(0x15894);
    0x000153e0 movs r2, 1                                                                    |     r2 = 1;
    0x000153e2 strd r2, r2, [r0, 4]                                                          |     __asm ("strd r2, r2, [r0, 4]");
    0x000153e6 mov fp, r0                                                                    |     
    0x000153e8 mov r4, r0                                                                    |     r4 = r0;
    0x000153ea ldr r3, [r5, r3]                                                              |     r3 = *((r5 + r3));
    0x000153ec adds r3, 8                                                                    |     r3 += 8;
    0x000153ee str r3, [fp], 0x10                                                            |     *(fp) = r3;
                                                                                             |     fp += 0x10;
    0x000153f2 cmp.w r8, 0                                                                   |     
                                                                                             |     if (r8 != 0) {
    0x000153f6 beq 0x15414                                                                   |         
    0x000153f8 ldr.w r3, [pc, 0x494]                                                         |         r3 = *(0x15890);
    0x000153fc ldr.w sb, [r5, r3]                                                            |         sb = *((r5 + r3));
    0x00015400 ldrb.w r3, [sb]                                                               |         r3 = *(sb);
    0x00015404 cmp r3, 0                                                                     |         
                                                                                             |         if (r3 == 0) {
    0x00015406 beq.w 0x15646                                                                 |             goto label_18;
                                                                                             |         }
    0x0001540a ldr.w r3, [r8, 4]                                                             |         r3 = *((r8 + 4));
    0x0001540e add r3, r2                                                                    |         r3 += r2;
    0x00015410 str.w r3, [r8, 4]                                                             |         __asm ("str.w r3, [r8, 4]");
                                                                                             |     }
                                                                                             | label_5:
    0x00015414 ldr.w r3, [pc, 0x480]                                                         |     
    0x00015418 ldr r3, [r5, r3]                                                              |     r3 = *((r5 + r3));
    0x0001541a str r3, [sp, 8]                                                               |     var_8h = r3;
    0x0001541c ldr r3, [r3]                                                                  |     r3 = *(0x15898);
    0x0001541e dmb ish                                                                       |     __asm ("dmb ish");
    0x00015422 ands sb, r3, 1                                                                |     sb = r3 & 1;
                                                                                             |     if (sb == r3) {
    0x00015426 beq.w 0x155ba                                                                 |         goto label_19;
                                                                                             |     }
                                                                                             | label_0:
    0x0001542a ldr r3, [sp]                                                                  |     r3 = *(sp);
    0x0001542c ldr.w sl, [r3, 0x30]                                                          |     sl = *((r3 + 0x30));
    0x00015430 cmp.w sl, 0                                                                   |     
                                                                                             |     if (sl == 0) {
    0x00015434 beq.w 0x155ec                                                                 |         goto label_20;
                                                                                             |     }
                                                                                             | label_1:
    0x00015438 movs r0, 0x24                                                                 |     r0 = 0x24;
    0x0001543a blx 0xe5ec                                                                    |     fcn_0000e5ec ();
    0x0001543e ldr.w r3, [pc, 0x45c]                                                         |     r3 = *(0x1589e);
    0x00015442 movs r2, 1                                                                    |     r2 = 1;
    0x00015444 strd r2, r2, [r0, 4]                                                          |     __asm ("strd r2, r2, [r0, 4]");
    0x00015448 mov r1, sl                                                                    |     r1 = sl;
    0x0001544a mov sl, r0                                                                    |     sl = r0;
    0x0001544c mov sb, r0                                                                    |     sb = r0;
    0x0001544e ldr r3, [r5, r3]                                                              |     r3 = *((r5 + r3));
    0x00015450 adds r3, 8                                                                    |     r3 += 8;
    0x00015452 str r3, [sl], 0xc                                                             |     *(sl) = r3;
                                                                                             |     sl += 0xc;
    0x00015456 mov r0, sl                                                                    |     r0 = sl;
    0x00015458 blx 0xee70                                                                    |     pthread_mutex_unlock ();
    0x0001545c strd sl, sb, [sp, 0x10]                                                       |     __asm ("strd sl, sb, [var_10h]");
    0x00015460 add.w sl, sp, 0x10                                                            |     sl += var_10h;
    0x00015464 ldr r2, [sp, 0xc]                                                             |     r2 = var_ch;
    0x00015466 mov r3, sl                                                                    |     r3 = sl;
    0x00015468 movs r1, 2                                                                    |     r1 = 2;
    0x0001546a mov r0, fp                                                                    |     r0 = fp;
    0x0001546c blx 0xeca0                                                                    |     fcn_0000eca0 ();
    0x00015470 ldr r0, [sp, 0x14]                                                            |     r0 = var_14h;
    0x00015472 ldr.w r3, [pc, 0x41c]                                                         |     r3 = *(0x15892);
    0x00015476 ldr.w sb, [r5, r3]                                                            |     sb = *((r5 + r3));
                                                                                             |     if (r0 != 0) {
    0x0001547a cbz r0, 0x15492                                                               |         
    0x0001547c ldrb.w r3, [sb]                                                               |         r3 = *(sb);
    0x00015480 cmp r3, 0                                                                     |         
                                                                                             |         if (r3 == 0) {
    0x00015482 beq.w 0x15714                                                                 |             goto label_21;
                                                                                             |         }
    0x00015486 ldr r3, [r0, 4]                                                               |         r3 = *((r0 + 4));
    0x00015488 subs r2, r3, 1                                                                |         r2 = r3 - 1;
    0x0001548a str r2, [r0, 4]                                                               |         *((r0 + 4)) = r2;
                                                                                             | label_11:
    0x0001548c cmp r3, 1                                                                     |         
                                                                                             |         if (r3 == 1) {
    0x0001548e beq.w 0x15662                                                                 |             goto label_22;
                                                                                             |         }
                                                                                             |     }
                                                                                             | label_6:
    0x00015492 ldr.w r3, [pc, 0x40c]                                                         |     r3 = *(0x158a2);
    0x00015496 ldr r2, [sp]                                                                  |     r2 = *(sp);
    0x00015498 ldr r3, [r5, r3]                                                              |     r3 = *((r5 + r3));
    0x0001549a strd r2, r8, [r4, 0xb0]                                                       |     __asm ("strd r2, r8, [r4, 0xb0]");
    0x0001549e strd fp, r4, [r6]                                                             |     __asm ("strd fp, r4, [r6]");
    0x000154a2 adds r3, 8                                                                    |     r3 += 8;
    0x000154a4 str r3, [r4, 0x10]                                                            |     *((r4 + 0x10)) = r3;
    0x000154a6 cmp.w r8, 0                                                                   |     
                                                                                             |     if (r8 == 0) {
    0x000154aa beq 0x1559e                                                                   |         goto label_23;
                                                                                             |     }
    0x000154ac ldrb.w r3, [sb]                                                               |     r3 = *(sb);
    0x000154b0 cmp r3, 0                                                                     |     
                                                                                             |     if (r3 == 0) {
    0x000154b2 beq.w 0x156de                                                                 |         goto label_24;
                                                                                             |     }
    0x000154b6 ldr.w r3, [r8, 4]                                                             |     r3 = *((r8 + 4));
    0x000154ba subs r2, r3, 1                                                                |     r2 = r3 - 1;
    0x000154bc str.w r2, [r8, 4]                                                             |     __asm ("str.w r2, [r8, 4]");
                                                                                             | label_9:
    0x000154c0 cmp r3, 1                                                                     |     
                                                                                             |     if (r3 == 1) {
    0x000154c2 beq.w 0x156b0                                                                 |         goto label_25;
                                                                                             |     }
                                                                                             | label_8:
    0x000154c6 ldrd r2, r4, [r6]                                                             |     __asm ("ldrd r2, r4, [r6]");
    0x000154ca ldr r3, [r7]                                                                  |     r3 = *(r7);
    0x000154cc ldr.w r3, [r3, 0x90]                                                          |     r3 = *((r3 + 0x90));
    0x000154d0 strd r2, r4, [sp, 0x10]                                                       |     __asm ("strd r2, r4, [var_10h]");
    0x000154d4 cmp r4, 0                                                                     |     
    0x000154d6 bne 0x155a8                                                                   |     
                                                                                             |     while (1) {
                                                                                             | label_12:
    0x000154d8 mov r1, sl                                                                    |         r1 = sl;
    0x000154da mov r0, r7                                                                    |         r0 = r7;
    0x000154dc blx r3                                                                        |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x000154de ldr r4, [sp, 0x14]                                                            |         r4 = var_14h;
                                                                                             |         if (r4 != 0) {
    0x000154e0 cbz r4, 0x154f8                                                               |             
    0x000154e2 ldrb.w r3, [sb]                                                               |             r3 = *(sb);
    0x000154e6 cmp r3, 0                                                                     |             
                                                                                             |             if (r3 == 0) {
    0x000154e8 beq.w 0x156fa                                                                 |                 goto label_26;
                                                                                             |             }
    0x000154ec ldr r3, [r4, 4]                                                               |             r3 = *((r4 + 4));
    0x000154ee subs r2, r3, 1                                                                |             r2 = r3 - 1;
    0x000154f0 str r2, [r4, 4]                                                               |             *((r4 + 4)) = r2;
                                                                                             | label_10:
    0x000154f2 cmp r3, 1                                                                     |             
                                                                                             |             if (r3 == 1) {
    0x000154f4 beq.w 0x15688                                                                 |                 goto label_27;
                                                                                             |             }
                                                                                             |         }
                                                                                             | label_7:
    0x000154f8 add r4, sp, 0x18                                                              |         r4 += var_18h;
    0x000154fa ldr r2, [r7, 0x50]                                                            |         r2 = *((r7 + 0x50));
    0x000154fc mov r1, r6                                                                    |         r1 = r6;
    0x000154fe mov r0, r4                                                                    |         r0 = r4;
    0x00015500 blx 0xe794                                                                    |         fcn_0000e794 ();
    0x00015504 ldr r3, [sp, 4]                                                               |         r3 = var_4h;
    0x00015506 ldr.w r8, [r7, 0x1c]                                                          |         r8 = *((r7 + 0x1c));
    0x0001550a ldr.w sl, [r3]                                                                |         sl = *(r3);
    0x0001550e ldr r3, [sp, 8]                                                               |         r3 = var_8h;
    0x00015510 ldr r3, [r3]                                                                  |         r3 = *(r3);
    0x00015512 dmb ish                                                                       |         __asm ("dmb ish");
    0x00015516 ands fp, r3, 1                                                                |         
                                                                                             |         if (fp == r3) {
    0x0001551a beq 0x155f4                                                                   |             goto label_28;
                                                                                             |         }
                                                                                             | label_2:
    0x0001551c ldr.w r3, [sl, 0x30]                                                          |         r3 = *((sl + 0x30));
    0x00015520 cmp r3, 0                                                                     |         
                                                                                             |         if (r3 == 0) {
    0x00015522 beq 0x15624                                                                   |             goto label_29;
                                                                                             |         }
                                                                                             | label_3:
    0x00015524 ldr r2, [sp, 4]                                                               |         r2 = var_4h;
    0x00015526 mov r0, r8                                                                    |         r0 = r8;
    0x00015528 ldr r1, [r3]                                                                  |         r1 = *(r3);
    0x0001552a mov r3, r4                                                                    |         r3 = r4;
    0x0001552c ldr r2, [r2]                                                                  |         r2 = *(r2);
    0x0001552e blx 0xebb8                                                                    |         cxa_rethrow ();
    0x00015532 ldr.w r8, [r6]                                                                |         r8 = *(r6);
    0x00015536 mov r4, r0                                                                    |         r4 = r0;
    0x00015538 cmp r0, 0                                                                     |         
                                                                                             |         if (r0 != 0) {
    0x0001553a bne.w 0x157bc                                                                 |             goto label_30;
                                                                                             |         }
    0x0001553e ldr r3, [pc, 0x364]                                                           |         r3 = *(0x158a6);
    0x00015540 ldr r7, [sp, 0x2c]                                                            |         r7 = var_2ch;
    0x00015542 ldr r4, [r5, r3]                                                              |         r4 = *((r5 + r3));
    0x00015544 add.w r5, r8, 4                                                               |         r5 = r8 + 4;
                                                                                             |         if (r4 != 0) {
    0x00015548 cbz r4, 0x15556                                                               |             
    0x0001554a mov r0, r5                                                                    |             r0 = r5;
    0x0001554c blx 0xe5f8                                                                    |             r0 = fcn_0000e5f8 ();
    0x00015550 cmp r0, 0                                                                     |             
                                                                                             |             if (r0 != 0) {
    0x00015552 bne.w 0x15802                                                                 |                 goto label_31;
                                                                                             |             }
                                                                                             |         }
    0x00015556 str.w r7, [r8, 0x78]                                                          |         __asm ("str.w r7, [r8, 0x78]");
                                                                                             |         if (r4 != 0) {
    0x0001555a cbz r4, 0x15562                                                               |             
    0x0001555c mov r0, r5                                                                    |             r0 = r5;
    0x0001555e blx 0xeea4                                                                    |             fcn_0000eea4 ();
                                                                                             |         }
    0x00015562 ldr r0, [sp, 0x60]                                                            |         r0 = var_60h;
                                                                                             |         if (r0 != 0) {
    0x00015564 cbz r0, 0x15580                                                               |             
    0x00015566 ldrb.w r3, [sb]                                                               |             r3 = *(sb);
    0x0001556a cmp r3, 0                                                                     |             
                                                                                             |             if (r3 == 0) {
    0x0001556c beq.w 0x1574a                                                                 |                 goto label_32;
                                                                                             |             }
    0x00015570 ldr r3, [r0, 8]                                                               |             r3 = *((r0 + 8));
    0x00015572 subs r2, r3, 1                                                                |             r2 = r3 - 1;
    0x00015574 str r2, [r0, 8]                                                               |             *((r0 + 8)) = r2;
                                                                                             | label_13:
    0x00015576 cmp r3, 1                                                                     |             
                                                                                             |             if (r3 != 1) {
    0x00015578 bne 0x15580                                                                   |                 goto label_33;
                                                                                             |             }
    0x0001557a ldr r3, [r0]                                                                  |             r3 = *(r0);
    0x0001557c ldr r3, [r3, 0xc]                                                             |             r3 = *((r3 + 0xc));
    0x0001557e blx r3                                                                        |             uint32_t (*r3)(uint32_t) (r3);
                                                                                             |         }
                                                                                             | label_33:
    0x00015580 ldr r2, [pc, 0x324]                                                           |         
    0x00015582 ldr r3, [pc, 0x304]                                                           |         r3 = *(0x1588a);
    0x00015584 add r2, pc                                                                    |         r2 = 0x2ae30;
    0x00015586 ldr r3, [r2, r3]                                                              |         r3 = *(0x2ae30);
    0x00015588 ldr r2, [r3]                                                                  |         r2 = *(0x2ae30);
    0x0001558a ldr r3, [sp, 0x64]                                                            |         r3 = var_64h;
    0x0001558c eors r2, r3                                                                   |         r2 ^= r3;
    0x0001558e mov.w r3, 0                                                                   |         r3 = 0;
                                                                                             |         if (r2 != r3) {
    0x00015592 bne.w 0x157fe                                                                 |             goto label_34;
                                                                                             |         }
    0x00015596 mov r0, r6                                                                    |         r0 = r6;
    0x00015598 add sp, 0x6c                                                                  |         
    0x0001559a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                    |         
                                                                                             | label_23:
    0x0001559e ldr r3, [r7]                                                                  |         r3 = *(r7);
    0x000155a0 ldr.w r3, [r3, 0x90]                                                          |         r3 = *((r3 + 0x90));
    0x000155a4 strd fp, r4, [sp, 0x10]                                                       |         __asm ("strd fp, r4, [var_10h]");
    0x000155a8 ldrb.w r2, [sb]                                                               |         r2 = *(sb);
    0x000155ac cmp r2, 0                                                                     |         
                                                                                             |         if (r2 == 0) {
    0x000155ae beq.w 0x15730                                                                 |             goto label_35;
                                                                                             |         }
    0x000155b2 ldr r2, [r4, 4]                                                               |         r2 = *((r4 + 4));
    0x000155b4 adds r2, 1                                                                    |         r2++;
    0x000155b6 str r2, [r4, 4]                                                               |         *((r4 + 4)) = r2;
    0x000155b8 b 0x154d8                                                                     |         
                                                                                             |     }
                                                                                             | label_19:
    0x000155ba ldr r0, [sp, 8]                                                               |     r0 = var_8h;
    0x000155bc blx 0xed90                                                                    |     r0 = fcn_0000ed90 ();
    0x000155c0 cmp r0, 0                                                                     |     
                                                                                             |     if (r0 == 0) {
    0x000155c2 beq.w 0x1542a                                                                 |         goto label_0;
                                                                                             |     }
    0x000155c6 ldr r3, [pc, 0x2e4]                                                           |     r3 = *(0x158ae);
    0x000155c8 ldr r0, [r5, r3]                                                              |     r0 = *((r5 + r3));
    0x000155ca ldr r3, [pc, 0x2e4]                                                           |     r3 = *(0x158b2);
    0x000155cc add.w r2, r0, 8                                                               |     r2 = r0 + 8;
    0x000155d0 str.w sb, [r0, 4]                                                             |     __asm ("str.w sb, [r0, 4]");
    0x000155d4 str r2, [r0]                                                                  |     *(r0) = r2;
    0x000155d6 ldr r2, [pc, 0x2dc]                                                           |     
    0x000155d8 strb.w sb, [r0, 8]                                                            |     *((r0 + 8)) = sb;
    0x000155dc ldr r1, [r5, r3]                                                              |     r1 = *((r5 + r3));
    0x000155de add r2, pc                                                                    |     r2 = 0x2ae98;
    0x000155e0 blx 0xe620                                                                    |     fcn_0000e620 ();
    0x000155e4 ldr r0, [sp, 8]                                                               |     r0 = var_8h;
    0x000155e6 blx 0xe824                                                                    |     fcn_0000e824 ();
    0x000155ea b 0x1542a                                                                     |     goto label_0;
                                                                                             | label_20:
    0x000155ec ldr r3, [pc, 0x2bc]                                                           |     r3 = *(0x158ac);
    0x000155ee ldr.w sl, [r5, r3]                                                            |     sl = *((r5 + r3));
    0x000155f2 b 0x15438                                                                     |     goto label_1;
                                                                                             | label_28:
    0x000155f4 ldr r0, [sp, 8]                                                               |     r0 = var_8h;
    0x000155f6 blx 0xed90                                                                    |     r0 = fcn_0000ed90 ();
    0x000155fa cmp r0, 0                                                                     |     
                                                                                             |     if (r0 == 0) {
    0x000155fc beq 0x1551c                                                                   |         goto label_2;
                                                                                             |     }
    0x000155fe ldr r3, [pc, 0x2ac]                                                           |     r3 = *(0x158ae);
    0x00015600 ldr r0, [r5, r3]                                                              |     r0 = *((r5 + r3));
    0x00015602 ldr r3, [pc, 0x2ac]                                                           |     r3 = *(0x158b2);
    0x00015604 add.w r2, r0, 8                                                               |     r2 = r0 + 8;
    0x00015608 str.w fp, [r0, 4]                                                             |     __asm ("str.w fp, [r0, 4]");
    0x0001560c str r2, [r0]                                                                  |     *(r0) = r2;
    0x0001560e ldr r2, [pc, 0x2a8]                                                           |     
    0x00015610 strb.w fp, [r0, 8]                                                            |     *((r0 + 8)) = fp;
    0x00015614 ldr r1, [r5, r3]                                                              |     r1 = *((r5 + r3));
    0x00015616 add r2, pc                                                                    |     r2 = 0x2aed4;
    0x00015618 blx 0xe620                                                                    |     fcn_0000e620 ();
    0x0001561c ldr r0, [sp, 8]                                                               |     r0 = var_8h;
    0x0001561e blx 0xe824                                                                    |     fcn_0000e824 ();
    0x00015622 b 0x1551c                                                                     |     goto label_2;
                                                                                             | label_29:
    0x00015624 ldr r3, [pc, 0x284]                                                           |     r3 = *(0x158ac);
    0x00015626 ldr r3, [r5, r3]                                                              |     r3 = *((r5 + r3));
    0x00015628 b 0x15524                                                                     |     goto label_3;
                                                                                             | label_17:
    0x0001562a add.w r3, r8, 4                                                               |     r3 = r8 + 4;
    0x0001562e dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x00015632 ldrex r1, [r3]                                                                |         __asm ("ldrex r1, [r3]");
    0x00015636 adds r1, 1                                                                    |         r1++;
    0x00015638 strex r2, r1, [r3]                                                            |         __asm ("strex r2, r1, [r3]");
    0x0001563c cmp r2, 0                                                                     |         
    0x0001563e bne 0x15632                                                                   |         
                                                                                             |     } while (r2 != 0);
    0x00015640 dmb ish                                                                       |     __asm ("dmb ish");
    0x00015644 b 0x153d2                                                                     |     goto label_4;
                                                                                             | label_18:
    0x00015646 add.w r3, r8, 4                                                               |     r3 = r8 + 4;
    0x0001564a dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x0001564e ldrex r1, [r3]                                                                |         __asm ("ldrex r1, [r3]");
    0x00015652 adds r1, 1                                                                    |         r1++;
    0x00015654 strex r2, r1, [r3]                                                            |         __asm ("strex r2, r1, [r3]");
    0x00015658 cmp r2, 0                                                                     |         
    0x0001565a bne 0x1564e                                                                   |         
                                                                                             |     } while (r2 != 0);
    0x0001565c dmb ish                                                                       |     __asm ("dmb ish");
    0x00015660 b 0x15414                                                                     |     goto label_5;
                                                                                             | label_22:
    0x00015662 ldr r3, [r0]                                                                  |     r3 = *(r0);
    0x00015664 str r0, [sp, 0xc]                                                             |     var_ch = r0;
    0x00015666 ldr r3, [r3, 8]                                                               |     r3 = *((r3 + 8));
    0x00015668 blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001566a ldrb.w r3, [sb]                                                               |     r3 = *(sb);
    0x0001566e ldr r0, [sp, 0xc]                                                             |     r0 = var_ch;
    0x00015670 cmp r3, 0                                                                     |     
                                                                                             |     if (r3 == 0) {
    0x00015672 beq 0x15766                                                                   |         goto label_36;
                                                                                             |     }
    0x00015674 ldr r3, [r0, 8]                                                               |     r3 = *((r0 + 8));
    0x00015676 subs r2, r3, 1                                                                |     r2 = r3 - 1;
    0x00015678 str r2, [r0, 8]                                                               |     *((r0 + 8)) = r2;
                                                                                             | label_14:
    0x0001567a cmp r3, 1                                                                     |     
                                                                                             |     if (r3 != 1) {
    0x0001567c bne.w 0x15492                                                                 |         goto label_6;
                                                                                             |     }
    0x00015680 ldr r3, [r0]                                                                  |     r3 = *(r0);
    0x00015682 ldr r3, [r3, 0xc]                                                             |     r3 = *((r3 + 0xc));
    0x00015684 blx r3                                                                        |     uint32_t (*r3)(uint32_t) (r3);
    0x00015686 b 0x15492                                                                     |     goto label_6;
                                                                                             | label_27:
    0x00015688 ldr r3, [r4]                                                                  |     r3 = *(r4);
    0x0001568a mov r0, r4                                                                    |     r0 = r4;
    0x0001568c ldr r3, [r3, 8]                                                               |     r3 = *((r3 + 8));
    0x0001568e blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015690 ldrb.w r3, [sb]                                                               |     r3 = *(sb);
    0x00015694 cmp r3, 0                                                                     |     
                                                                                             |     if (r3 == 0) {
    0x00015696 beq.w 0x157a0                                                                 |         goto label_37;
                                                                                             |     }
    0x0001569a ldr r3, [r4, 8]                                                               |     r3 = *((r4 + 8));
    0x0001569c subs r2, r3, 1                                                                |     r2 = r3 - 1;
    0x0001569e str r2, [r4, 8]                                                               |     *((r4 + 8)) = r2;
                                                                                             | label_16:
    0x000156a0 cmp r3, 1                                                                     |     
                                                                                             |     if (r3 != 1) {
    0x000156a2 bne.w 0x154f8                                                                 |         goto label_7;
                                                                                             |     }
    0x000156a6 ldr r3, [r4]                                                                  |     r3 = *(r4);
    0x000156a8 mov r0, r4                                                                    |     r0 = r4;
    0x000156aa ldr r3, [r3, 0xc]                                                             |     r3 = *((r3 + 0xc));
    0x000156ac blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000156ae b 0x154f8                                                                     |     goto label_7;
                                                                                             | label_25:
    0x000156b0 ldr.w r3, [r8]                                                                |     r3 = *(r8);
    0x000156b4 mov r0, r8                                                                    |     r0 = r8;
    0x000156b6 ldr r3, [r3, 8]                                                               |     r3 = *((r3 + 8));
    0x000156b8 blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000156ba ldrb.w r3, [sb]                                                               |     r3 = *(sb);
    0x000156be cmp r3, 0                                                                     |     
                                                                                             |     if (r3 == 0) {
    0x000156c0 beq 0x15784                                                                   |         goto label_38;
                                                                                             |     }
    0x000156c2 ldr.w r3, [r8, 8]                                                             |     r3 = *((r8 + 8));
    0x000156c6 subs r2, r3, 1                                                                |     r2 = r3 - 1;
    0x000156c8 str.w r2, [r8, 8]                                                             |     __asm ("str.w r2, [r8, 8]");
                                                                                             | label_15:
    0x000156cc cmp r3, 1                                                                     |     
                                                                                             |     if (r3 != 1) {
    0x000156ce bne.w 0x154c6                                                                 |         goto label_8;
                                                                                             |     }
    0x000156d2 ldr.w r3, [r8]                                                                |     r3 = *(r8);
    0x000156d6 mov r0, r8                                                                    |     r0 = r8;
    0x000156d8 ldr r3, [r3, 0xc]                                                             |     r3 = *((r3 + 0xc));
    0x000156da blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000156dc b 0x154c6                                                                     |     goto label_8;
                                                                                             | label_24:
    0x000156de add.w r2, r8, 4                                                               |     r2 = r8 + 4;
    0x000156e2 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x000156e6 ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x000156ea subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x000156ec strex r0, r1, [r2]                                                            |         __asm ("strex r0, r1, [r2]");
    0x000156f0 cmp r0, 0                                                                     |         
    0x000156f2 bne 0x156e6                                                                   |         
                                                                                             |     } while (r0 != 0);
    0x000156f4 dmb ish                                                                       |     __asm ("dmb ish");
    0x000156f8 b 0x154c0                                                                     |     goto label_9;
                                                                                             | label_26:
    0x000156fa adds r2, r4, 4                                                                |     r2 = r4 + 4;
    0x000156fc dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x00015700 ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x00015704 subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x00015706 strex r0, r1, [r2]                                                            |         __asm ("strex r0, r1, [r2]");
    0x0001570a cmp r0, 0                                                                     |         
    0x0001570c bne 0x15700                                                                   |         
                                                                                             |     } while (r0 != 0);
    0x0001570e dmb ish                                                                       |     __asm ("dmb ish");
    0x00015712 b 0x154f2                                                                     |     goto label_10;
                                                                                             | label_21:
    0x00015714 adds r2, r0, 4                                                                |     r2 = r0 + 4;
    0x00015716 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x0001571a ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x0001571e subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x00015720 strex ip, r1, [r2]                                                            |         __asm ("strex ip, r1, [r2]");
    0x00015724 cmp.w ip, 0                                                                   |         
    0x00015728 bne 0x1571a                                                                   |         
                                                                                             |     } while (ip != 0);
    0x0001572a dmb ish                                                                       |     __asm ("dmb ish");
    0x0001572e b 0x1548c                                                                     |     goto label_11;
                                                                                             | label_35:
    0x00015730 adds r4, 4                                                                    |     r4 += 4;
    0x00015732 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x00015736 ldrex r2, [r4]                                                                |         __asm ("ldrex r2, [r4]");
    0x0001573a adds r2, 1                                                                    |         r2++;
    0x0001573c strex r1, r2, [r4]                                                            |         __asm ("strex r1, r2, [r4]");
    0x00015740 cmp r1, 0                                                                     |         
    0x00015742 bne 0x15736                                                                   |         
                                                                                             |     } while (r1 != 0);
    0x00015744 dmb ish                                                                       |     __asm ("dmb ish");
    0x00015748 b 0x154d8                                                                     |     goto label_12;
                                                                                             | label_32:
    0x0001574a add.w r2, r0, 8                                                               |     r2 = r0 + 8;
    0x0001574e dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x00015752 ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x00015756 subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x00015758 strex r4, r1, [r2]                                                            |         __asm ("strex r4, r1, [r2]");
    0x0001575c cmp r4, 0                                                                     |         
    0x0001575e bne 0x15752                                                                   |         
                                                                                             |     } while (r4 != 0);
    0x00015760 dmb ish                                                                       |     __asm ("dmb ish");
    0x00015764 b 0x15576                                                                     |     goto label_13;
                                                                                             | label_36:
    0x00015766 add.w r2, r0, 8                                                               |     r2 = r0 + 8;
    0x0001576a dmb ish                                                                       |     __asm ("dmb ish");
    0x0001576c ldrh r3, [r3, 0x3a]                                                           |     r3 = *((r3 + 0x3a));
                                                                                             |     do {
    0x0001576e ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x00015772 subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x00015774 strex ip, r1, [r2]                                                            |         __asm ("strex ip, r1, [r2]");
    0x00015778 cmp.w ip, 0                                                                   |         
    0x0001577c bne 0x1576e                                                                   |         
                                                                                             |     } while (ip != 0);
    0x0001577e dmb ish                                                                       |     __asm ("dmb ish");
    0x00015782 b 0x1567a                                                                     |     goto label_14;
                                                                                             | label_38:
    0x00015784 add.w r2, r8, 8                                                               |     r2 = r8 + 8;
    0x00015788 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x0001578c ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x00015790 subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x00015792 strex r0, r1, [r2]                                                            |         __asm ("strex r0, r1, [r2]");
    0x00015796 cmp r0, 0                                                                     |         
    0x00015798 bne 0x1578c                                                                   |         
                                                                                             |     } while (r0 != 0);
    0x0001579a dmb ish                                                                       |     __asm ("dmb ish");
    0x0001579e b 0x156cc                                                                     |     goto label_15;
                                                                                             | label_37:
    0x000157a0 add.w r2, r4, 8                                                               |     r2 = r4 + 8;
    0x000157a4 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x000157a8 ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x000157ac subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x000157ae strex r0, r1, [r2]                                                            |         __asm ("strex r0, r1, [r2]");
    0x000157b2 cmp r0, 0                                                                     |         
    0x000157b4 bne 0x157a8                                                                   |         
                                                                                             |     } while (r0 != 0);
    0x000157b6 dmb ish                                                                       |     __asm ("dmb ish");
    0x000157ba b 0x156a0                                                                     |     goto label_16;
                                                                                             | label_30:
    0x000157bc ldr.w sb, [r6, 4]                                                             |     sb = *((r6 + 4));
    0x000157c0 cmp.w sb, 0                                                                   |     
                                                                                             |     if (sb != 0) {
    0x000157c4 beq 0x157cc                                                                   |         
    0x000157c6 mov r0, sb                                                                    |         r0 = sb;
    0x000157c8 bl 0x18fb0                                                                    |         fcn_00018fb0 (r0);
                                                                                             |     }
    0x000157cc ldr r3, [r7]                                                                  |     r3 = *(r7);
    0x000157ce mov r1, r8                                                                    |     r1 = r8;
    0x000157d0 mov r0, r7                                                                    |     r0 = r7;
    0x000157d2 ldr r3, [r3]                                                                  |     r3 = *(r3);
    0x000157d4 blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000157d6 cmp.w sb, 0                                                                   |     
                                                                                             |     if (sb != 0) {
    0x000157da beq 0x157e2                                                                   |         
    0x000157dc mov r0, sb                                                                    |         r0 = sb;
    0x000157de bl 0x18a84                                                                    |         fcn_00018a84 (r0);
                                                                                             |     }
    0x000157e2 movs r0, 0x28                                                                 |     r0 = 0x28;
    0x000157e4 blx 0xe764                                                                    |     fcn_0000e764 ();
    0x000157e8 mov r1, r4                                                                    |     r1 = r4;
    0x000157ea mov r4, r0                                                                    |     r4 = r0;
    0x000157ec bl 0x17aa8                                                                    |     fcn_00017aa8 (r0, r1);
    0x000157f0 ldr r2, [pc, 0xc8]                                                            |     r2 = *(0x158bc);
    0x000157f2 mov r0, r4                                                                    |     r0 = r4;
    0x000157f4 ldr r3, [pc, 0xc8]                                                            |     r3 = *(0x158c0);
    0x000157f6 ldr r2, [r5, r2]                                                              |     r2 = *((r5 + r2));
    0x000157f8 ldr r1, [r5, r3]                                                              |     r1 = *((r5 + r3));
    0x000157fa blx 0xed0c                                                                    |     fcn_0000ed0c ();
                                                                                             | label_34:
    0x000157fe blx 0xea48                                                                    |     fcn_0000ea48 ();
                                                                                             | label_31:
    0x00015802 blx 0xe830                                                                    |     fcn_0000e830 ();
    0x00015806 ldr r0, [sp, 0x14]                                                            |     r0 = var_14h;
                                                                                             |     if (r0 == 0) {
    0x00015808 cbz r0, 0x1582c                                                               |         goto label_39;
                                                                                             |     }
    0x0001580a bl 0x18a84                                                                    |     fcn_00018a84 (r0);
    0x0001580e b 0x1582c                                                                     |     
                                                                                             |     while (1) {
                                                                                             | label_39:
    0x0001582c ldr r0, [r6, 4]                                                               |         r0 = *((r6 + 4));
                                                                                             |         if (r0 != 0) {
    0x0001582e cbz r0, 0x15834                                                               |             
    0x00015830 bl 0x18a84                                                                    |             r0 = fcn_00018a84 (r0);
                                                                                             |         }
    0x00015834 blx 0xea54                                                                    |         fcn_0000ea54 ();
    0x00015838 b 0x1582c                                                                     |         
                                                                                             |     }
                                                                                             | }
    ; assembly                                                                                                           | /* r2dec pseudo code output */
                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x158d4 */
                                                                                                                         | #include <stdint.h>
                                                                                                                         |  
    ; (fcn) method.mqtt::async_client.publish_std::shared_ptr_mqtt::message_const___void__mqtt::iaction_listener_ ()     | void method_mqtt::async_client_publish_std::shared_ptr_mqtt::message_const_void_mqtt::iaction_listener_ (int16_t arg_a0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                         |     int16_t var_0h;
                                                                                                                         |     int16_t var_4h;
                                                                                                                         |     int16_t var_8h;
                                                                                                                         |     int16_t var_ch;
                                                                                                                         |     int16_t var_10h;
                                                                                                                         |     int16_t var_14h;
                                                                                                                         |     int16_t var_18h;
                                                                                                                         |     int16_t var_1ch;
                                                                                                                         |     int16_t var_24h;
                                                                                                                         |     int16_t var_28h;
                                                                                                                         |     int16_t var_3ch;
                                                                                                                         |     int16_t var_70h;
                                                                                                                         |     int16_t var_74h;
                                                                                                                         |     r0 = arg1;
                                                                                                                         |     r1 = arg2;
                                                                                                                         |     r2 = arg3;
                                                                                                                         |     r3 = arg4;
                                                                                                                         |     /* mqtt::async_client::publish(std::shared_ptr<qtt::message const>, void*, mqtt::iaction_listener&) */
    0x000158d4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                               |     
    0x000158d8 sub sp, 0x7c                                                                                              |     
    0x000158da mov r4, r2                                                                                                |     r4 = r2;
    0x000158dc str r2, [sp, 0xc]                                                                                         |     var_ch = r2;
    0x000158de mov r7, r1                                                                                                |     r7 = r1;
    0x000158e0 mov r6, r0                                                                                                |     r6 = r0;
    0x000158e2 ldr.w r2, [pc, 0x50c]                                                                                     |     r2 = *(0x00015df0);
    0x000158e6 str r3, [sp, 0x18]                                                                                        |     var_18h = r3;
    0x000158e8 ldr r1, [sp, 0xa0]                                                                                        |     r1 = *(arg_a0h);
    0x000158ea ldr.w r3, [pc, 0x508]                                                                                     |     
    0x000158ee add r2, pc                                                                                                |     r2 += pc;
    0x000158f0 ldr.w r5, [pc, 0x504]                                                                                     |     
    0x000158f4 str r1, [sp, 0x1c]                                                                                        |     var_1ch = r1;
    0x000158f6 ldr r3, [r2, r3]                                                                                          |     r3 = *((r2 + r3));
    0x000158f8 ldr.w r8, [r4, 4]                                                                                         |     r8 = *((r4 + 4));
    0x000158fc add r5, pc                                                                                                |     r5 = 0x2b6f8;
    0x000158fe ldr r3, [r3]                                                                                              |     r3 = *(0x15df6);
    0x00015900 str r3, [sp, 0x74]                                                                                        |     var_74h = r3;
    0x00015902 mov.w r3, 0                                                                                               |     r3 = 0;
    0x00015906 ldr r3, [r7]                                                                                              |     r3 = *(r7);
    0x00015908 ldr r3, [r3, -0x94]                                                                                       |     r3 = *((r3 - 0x94));
    0x0001590c adds r1, r7, r3                                                                                           |     r1 = r7 + r3;
    0x0001590e ldr r3, [r4]                                                                                              |     r3 = *(r4);
    0x00015910 str r1, [sp, 0x14]                                                                                        |     var_14h = r1;
    0x00015912 str r3, [sp, 8]                                                                                           |     var_8h = r3;
    0x00015914 cmp.w r8, 0                                                                                               |     
                                                                                                                         |     if (r8 != 0) {
    0x00015918 beq 0x15936                                                                                               |         
    0x0001591a ldr.w r3, [pc, 0x4e0]                                                                                     |         r3 = *(0x15dfe);
    0x0001591e ldr.w sb, [r5, r3]                                                                                        |         sb = *((r5 + r3));
    0x00015922 ldrb.w r3, [sb]                                                                                           |         r3 = *(sb);
    0x00015926 cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x00015928 beq.w 0x15b96                                                                                             |             goto label_17;
                                                                                                                         |         }
    0x0001592c ldr.w r3, [r8, 4]                                                                                         |         r3 = *((r8 + 4));
    0x00015930 adds r3, 1                                                                                                |         r3++;
    0x00015932 str.w r3, [r8, 4]                                                                                         |         __asm ("str.w r3, [r8, 4]");
                                                                                                                         |     }
                                                                                                                         | label_4:
    0x00015936 movs r3, 0                                                                                                |     r3 = 0;
    0x00015938 movs r0, 0xb8                                                                                             |     r0 = 0xb8;
    0x0001593a str r3, [r6]                                                                                              |     *(r6) = r3;
    0x0001593c blx 0xe5ec                                                                                                |     fcn_0000e5ec ();
    0x00015940 ldr.w r3, [pc, 0x4bc]                                                                                     |     r3 = *(0x15e00);
    0x00015944 movs r2, 1                                                                                                |     r2 = 1;
    0x00015946 strd r2, r2, [r0, 4]                                                                                      |     __asm ("strd r2, r2, [r0, 4]");
    0x0001594a mov sl, r0                                                                                                |     sl = r0;
    0x0001594c mov r4, r0                                                                                                |     r4 = r0;
    0x0001594e ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x00015950 adds r3, 8                                                                                                |     r3 += 8;
    0x00015952 str r3, [sl], 0x10                                                                                        |     *(sl) = r3;
                                                                                                                         |     sl += 0x10;
    0x00015956 cmp.w r8, 0                                                                                               |     
                                                                                                                         |     if (r8 != 0) {
    0x0001595a beq 0x15978                                                                                               |         
    0x0001595c ldr.w r3, [pc, 0x49c]                                                                                     |         r3 = *(0x15dfc);
    0x00015960 ldr.w sb, [r5, r3]                                                                                        |         sb = *((r5 + r3));
    0x00015964 ldrb.w r3, [sb]                                                                                           |         r3 = *(sb);
    0x00015968 cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x0001596a beq.w 0x15bb2                                                                                             |             goto label_18;
                                                                                                                         |         }
    0x0001596e ldr.w r3, [r8, 4]                                                                                         |         r3 = *((r8 + 4));
    0x00015972 add r3, r2                                                                                                |         r3 += r2;
    0x00015974 str.w r3, [r8, 4]                                                                                         |         __asm ("str.w r3, [r8, 4]");
                                                                                                                         |     }
                                                                                                                         | label_5:
    0x00015978 ldr.w r3, [pc, 0x488]                                                                                     |     
    0x0001597c ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x0001597e str r3, [sp, 0x10]                                                                                        |     var_10h = r3;
    0x00015980 ldr r3, [r3]                                                                                              |     r3 = *(0x15e04);
    0x00015982 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015986 ands sb, r3, 1                                                                                            |     sb = r3 & 1;
                                                                                                                         |     if (sb == r3) {
    0x0001598a beq.w 0x15b26                                                                                             |         goto label_19;
                                                                                                                         |     }
                                                                                                                         | label_0:
    0x0001598e ldr r3, [sp, 8]                                                                                           |     r3 = var_8h;
    0x00015990 ldr.w fp, [r3, 0x30]                                                                                      |     fp = *((r3 + 0x30));
    0x00015994 cmp.w fp, 0                                                                                               |     
                                                                                                                         |     if (fp == 0) {
    0x00015998 beq.w 0x15b58                                                                                             |         goto label_20;
                                                                                                                         |     }
                                                                                                                         | label_1:
    0x0001599c movs r0, 0x24                                                                                             |     r0 = 0x24;
    0x0001599e blx 0xe5ec                                                                                                |     fcn_0000e5ec ();
    0x000159a2 ldr.w r3, [pc, 0x464]                                                                                     |     r3 = *(0x15e0a);
    0x000159a6 movs r2, 1                                                                                                |     r2 = 1;
    0x000159a8 strd r2, r2, [r0, 4]                                                                                      |     __asm ("strd r2, r2, [r0, 4]");
    0x000159ac mov r1, fp                                                                                                |     r1 = fp;
    0x000159ae mov fp, r0                                                                                                |     
    0x000159b0 mov sb, r0                                                                                                |     sb = r0;
    0x000159b2 ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x000159b4 adds r3, 8                                                                                                |     r3 += 8;
    0x000159b6 str r3, [fp], 0xc                                                                                         |     *(fp) = r3;
                                                                                                                         |     fp += 0xc;
    0x000159ba mov r0, fp                                                                                                |     r0 = fp;
    0x000159bc blx 0xee70                                                                                                |     pthread_mutex_unlock ();
    0x000159c0 ldr r3, [sp, 0x1c]                                                                                        |     r3 = var_1ch;
    0x000159c2 movs r1, 2                                                                                                |     r1 = 2;
    0x000159c4 strd fp, sb, [sp, 0x20]                                                                                   |     __asm ("strd fp, sb, [var_24h]");
    0x000159c8 add.w fp, sp, 0x20                                                                                        |     
    0x000159cc ldr r2, [sp, 0x14]                                                                                        |     r2 = var_14h;
    0x000159ce mov r0, sl                                                                                                |     r0 = sl;
    0x000159d0 str r3, [sp, 4]                                                                                           |     var_4h = r3;
    0x000159d2 ldr r3, [sp, 0x18]                                                                                        |     r3 = var_18h;
    0x000159d4 str r3, [sp]                                                                                              |     *(sp) = r3;
    0x000159d6 mov r3, fp                                                                                                |     r3 = fp;
    0x000159d8 blx 0xe5d0                                                                                                |     fcn_0000e5d0 ();
    0x000159dc ldr r0, [sp, 0x24]                                                                                        |     r0 = var_24h;
    0x000159de ldr.w r3, [pc, 0x41c]                                                                                     |     r3 = *(0x15dfe);
    0x000159e2 ldr.w sb, [r5, r3]                                                                                        |     sb = *((r5 + r3));
                                                                                                                         |     if (r0 != 0) {
    0x000159e6 cbz r0, 0x159fe                                                                                           |         
    0x000159e8 ldrb.w r3, [sb]                                                                                           |         r3 = *(sb);
    0x000159ec cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x000159ee beq.w 0x15c80                                                                                             |             goto label_21;
                                                                                                                         |         }
    0x000159f2 ldr r3, [r0, 4]                                                                                           |         r3 = *((r0 + 4));
    0x000159f4 subs r2, r3, 1                                                                                            |         r2 = r3 - 1;
    0x000159f6 str r2, [r0, 4]                                                                                           |         *((r0 + 4)) = r2;
                                                                                                                         | label_11:
    0x000159f8 cmp r3, 1                                                                                                 |         
                                                                                                                         |         if (r3 == 1) {
    0x000159fa beq.w 0x15bce                                                                                             |             goto label_22;
                                                                                                                         |         }
                                                                                                                         |     }
                                                                                                                         | label_6:
    0x000159fe ldr.w r3, [pc, 0x40c]                                                                                     |     r3 = *(0x15e0e);
    0x00015a02 ldr r2, [sp, 8]                                                                                           |     r2 = var_8h;
    0x00015a04 ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x00015a06 strd r2, r8, [r4, 0xb0]                                                                                   |     __asm ("strd r2, r8, [r4, 0xb0]");
    0x00015a0a strd sl, r4, [r6]                                                                                         |     __asm ("strd sl, r4, [r6]");
    0x00015a0e adds r3, 8                                                                                                |     r3 += 8;
    0x00015a10 str r3, [r4, 0x10]                                                                                        |     *((r4 + 0x10)) = r3;
    0x00015a12 cmp.w r8, 0                                                                                               |     
                                                                                                                         |     if (r8 == 0) {
    0x00015a16 beq 0x15b0a                                                                                               |         goto label_23;
                                                                                                                         |     }
    0x00015a18 ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015a1c cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015a1e beq.w 0x15c4a                                                                                             |         goto label_24;
                                                                                                                         |     }
    0x00015a22 ldr.w r3, [r8, 4]                                                                                         |     r3 = *((r8 + 4));
    0x00015a26 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015a28 str.w r2, [r8, 4]                                                                                         |     __asm ("str.w r2, [r8, 4]");
                                                                                                                         | label_9:
    0x00015a2c cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 == 1) {
    0x00015a2e beq.w 0x15c1c                                                                                             |         goto label_25;
                                                                                                                         |     }
                                                                                                                         | label_8:
    0x00015a32 ldrd r2, r4, [r6]                                                                                         |     __asm ("ldrd r2, r4, [r6]");
    0x00015a36 ldr r3, [r7]                                                                                              |     r3 = *(r7);
    0x00015a38 ldr.w r3, [r3, 0x90]                                                                                      |     r3 = *((r3 + 0x90));
    0x00015a3c strd r2, r4, [sp, 0x20]                                                                                   |     __asm ("strd r2, r4, [var_24h]");
    0x00015a40 cmp r4, 0                                                                                                 |     
    0x00015a42 bne 0x15b14                                                                                               |     
                                                                                                                         |     while (1) {
                                                                                                                         | label_12:
    0x00015a44 mov r1, fp                                                                                                |         r1 = fp;
    0x00015a46 mov r0, r7                                                                                                |         r0 = r7;
    0x00015a48 blx r3                                                                                                    |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00015a4a ldr r4, [sp, 0x24]                                                                                        |         r4 = var_24h;
                                                                                                                         |         if (r4 != 0) {
    0x00015a4c cbz r4, 0x15a64                                                                                           |             
    0x00015a4e ldrb.w r3, [sb]                                                                                           |             r3 = *(sb);
    0x00015a52 cmp r3, 0                                                                                                 |             
                                                                                                                         |             if (r3 == 0) {
    0x00015a54 beq.w 0x15c66                                                                                             |                 goto label_26;
                                                                                                                         |             }
    0x00015a58 ldr r3, [r4, 4]                                                                                           |             r3 = *((r4 + 4));
    0x00015a5a subs r2, r3, 1                                                                                            |             r2 = r3 - 1;
    0x00015a5c str r2, [r4, 4]                                                                                           |             *((r4 + 4)) = r2;
                                                                                                                         | label_10:
    0x00015a5e cmp r3, 1                                                                                                 |             
                                                                                                                         |             if (r3 == 1) {
    0x00015a60 beq.w 0x15bf4                                                                                             |                 goto label_27;
                                                                                                                         |             }
                                                                                                                         |         }
                                                                                                                         | label_7:
    0x00015a64 add r4, sp, 0x28                                                                                          |         r4 += var_28h;
    0x00015a66 ldr r2, [r7, 0x50]                                                                                        |         r2 = *((r7 + 0x50));
    0x00015a68 mov r1, r6                                                                                                |         r1 = r6;
    0x00015a6a mov r0, r4                                                                                                |         r0 = r4;
    0x00015a6c blx 0xe794                                                                                                |         fcn_0000e794 ();
    0x00015a70 ldr r3, [sp, 0xc]                                                                                         |         r3 = var_ch;
    0x00015a72 ldr.w r8, [r7, 0x1c]                                                                                      |         r8 = *((r7 + 0x1c));
    0x00015a76 ldr.w sl, [r3]                                                                                            |         sl = *(r3);
    0x00015a7a ldr r3, [sp, 0x10]                                                                                        |         r3 = var_10h;
    0x00015a7c ldr r3, [r3]                                                                                              |         r3 = *(r3);
    0x00015a7e dmb ish                                                                                                   |         __asm ("dmb ish");
    0x00015a82 ands fp, r3, 1                                                                                            |         
                                                                                                                         |         if (fp == r3) {
    0x00015a86 beq 0x15b60                                                                                               |             goto label_28;
                                                                                                                         |         }
                                                                                                                         | label_2:
    0x00015a88 ldr.w r3, [sl, 0x30]                                                                                      |         r3 = *((sl + 0x30));
    0x00015a8c cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x00015a8e beq 0x15b90                                                                                               |             goto label_29;
                                                                                                                         |         }
                                                                                                                         | label_3:
    0x00015a90 ldr r2, [sp, 0xc]                                                                                         |         r2 = var_ch;
    0x00015a92 mov r0, r8                                                                                                |         r0 = r8;
    0x00015a94 ldr r1, [r3]                                                                                              |         r1 = *(r3);
    0x00015a96 mov r3, r4                                                                                                |         r3 = r4;
    0x00015a98 ldr r2, [r2]                                                                                              |         r2 = *(r2);
    0x00015a9a blx 0xebb8                                                                                                |         cxa_rethrow ();
    0x00015a9e ldr.w r8, [r6]                                                                                            |         r8 = *(r6);
    0x00015aa2 mov r4, r0                                                                                                |         r4 = r0;
    0x00015aa4 cmp r0, 0                                                                                                 |         
                                                                                                                         |         if (r0 != 0) {
    0x00015aa6 bne.w 0x15d28                                                                                             |             goto label_30;
                                                                                                                         |         }
    0x00015aaa ldr r3, [pc, 0x364]                                                                                       |         r3 = *(0x15e12);
    0x00015aac ldr r7, [sp, 0x3c]                                                                                        |         r7 = var_3ch;
    0x00015aae ldr r4, [r5, r3]                                                                                          |         r4 = *((r5 + r3));
    0x00015ab0 add.w r5, r8, 4                                                                                           |         r5 = r8 + 4;
                                                                                                                         |         if (r4 != 0) {
    0x00015ab4 cbz r4, 0x15ac2                                                                                           |             
    0x00015ab6 mov r0, r5                                                                                                |             r0 = r5;
    0x00015ab8 blx 0xe5f8                                                                                                |             r0 = fcn_0000e5f8 ();
    0x00015abc cmp r0, 0                                                                                                 |             
                                                                                                                         |             if (r0 != 0) {
    0x00015abe bne.w 0x15d6e                                                                                             |                 goto label_31;
                                                                                                                         |             }
                                                                                                                         |         }
    0x00015ac2 str.w r7, [r8, 0x78]                                                                                      |         __asm ("str.w r7, [r8, 0x78]");
                                                                                                                         |         if (r4 != 0) {
    0x00015ac6 cbz r4, 0x15ace                                                                                           |             
    0x00015ac8 mov r0, r5                                                                                                |             r0 = r5;
    0x00015aca blx 0xeea4                                                                                                |             fcn_0000eea4 ();
                                                                                                                         |         }
    0x00015ace ldr r0, [sp, 0x70]                                                                                        |         r0 = var_70h;
                                                                                                                         |         if (r0 != 0) {
    0x00015ad0 cbz r0, 0x15aec                                                                                           |             
    0x00015ad2 ldrb.w r3, [sb]                                                                                           |             r3 = *(sb);
    0x00015ad6 cmp r3, 0                                                                                                 |             
                                                                                                                         |             if (r3 == 0) {
    0x00015ad8 beq.w 0x15cb6                                                                                             |                 goto label_32;
                                                                                                                         |             }
    0x00015adc ldr r3, [r0, 8]                                                                                           |             r3 = *((r0 + 8));
    0x00015ade subs r2, r3, 1                                                                                            |             r2 = r3 - 1;
    0x00015ae0 str r2, [r0, 8]                                                                                           |             *((r0 + 8)) = r2;
                                                                                                                         | label_13:
    0x00015ae2 cmp r3, 1                                                                                                 |             
                                                                                                                         |             if (r3 != 1) {
    0x00015ae4 bne 0x15aec                                                                                               |                 goto label_33;
                                                                                                                         |             }
    0x00015ae6 ldr r3, [r0]                                                                                              |             r3 = *(r0);
    0x00015ae8 ldr r3, [r3, 0xc]                                                                                         |             r3 = *((r3 + 0xc));
    0x00015aea blx r3                                                                                                    |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                         |         }
                                                                                                                         | label_33:
    0x00015aec ldr r2, [pc, 0x324]                                                                                       |         
    0x00015aee ldr r3, [pc, 0x304]                                                                                       |         r3 = *(0x15df6);
    0x00015af0 add r2, pc                                                                                                |         r2 = 0x2b908;
    0x00015af2 ldr r3, [r2, r3]                                                                                          |         r3 = imp._ZTINSt6thread6_StateE;
    0x00015af4 ldr r2, [r3]                                                                                              |         r2 = imp._ZTINSt6thread6_StateE;
    0x00015af6 ldr r3, [sp, 0x74]                                                                                        |         r3 = var_74h;
    0x00015af8 eors r2, r3                                                                                               |         r2 ^= r3;
    0x00015afa mov.w r3, 0                                                                                               |         r3 = 0;
                                                                                                                         |         if (r2 != r3) {
    0x00015afe bne.w 0x15d6a                                                                                             |             goto label_34;
                                                                                                                         |         }
    0x00015b02 mov r0, r6                                                                                                |         r0 = r6;
    0x00015b04 add sp, 0x7c                                                                                              |         
    0x00015b06 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                |         
                                                                                                                         | label_23:
    0x00015b0a ldr r3, [r7]                                                                                              |         r3 = *(r7);
    0x00015b0c ldr.w r3, [r3, 0x90]                                                                                      |         r3 = *((r3 + 0x90));
    0x00015b10 strd sl, r4, [sp, 0x20]                                                                                   |         __asm ("strd sl, r4, [var_24h]");
    0x00015b14 ldrb.w r2, [sb]                                                                                           |         r2 = *(sb);
    0x00015b18 cmp r2, 0                                                                                                 |         
                                                                                                                         |         if (r2 == 0) {
    0x00015b1a beq.w 0x15c9c                                                                                             |             goto label_35;
                                                                                                                         |         }
    0x00015b1e ldr r2, [r4, 4]                                                                                           |         r2 = *((r4 + 4));
    0x00015b20 adds r2, 1                                                                                                |         r2++;
    0x00015b22 str r2, [r4, 4]                                                                                           |         *((r4 + 4)) = r2;
    0x00015b24 b 0x15a44                                                                                                 |         
                                                                                                                         |     }
                                                                                                                         | label_19:
    0x00015b26 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b28 blx 0xed90                                                                                                |     r0 = fcn_0000ed90 ();
    0x00015b2c cmp r0, 0                                                                                                 |     
                                                                                                                         |     if (r0 == 0) {
    0x00015b2e beq.w 0x1598e                                                                                             |         goto label_0;
                                                                                                                         |     }
    0x00015b32 ldr r3, [pc, 0x2e4]                                                                                       |     r3 = *(0x15e1a);
    0x00015b34 ldr r0, [r5, r3]                                                                                          |     r0 = *((r5 + r3));
    0x00015b36 ldr r3, [pc, 0x2e4]                                                                                       |     r3 = *(0x15e1e);
    0x00015b38 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015b3c str.w sb, [r0, 4]                                                                                         |     __asm ("str.w sb, [r0, 4]");
    0x00015b40 str r2, [r0]                                                                                              |     *(r0) = r2;
    0x00015b42 ldr r2, [pc, 0x2dc]                                                                                       |     
    0x00015b44 strb.w sb, [r0, 8]                                                                                        |     *((r0 + 8)) = sb;
    0x00015b48 ldr r1, [r5, r3]                                                                                          |     r1 = *((r5 + r3));
    0x00015b4a add r2, pc                                                                                                |     r2 = 0x2b970;
    0x00015b4c blx 0xe620                                                                                                |     fcn_0000e620 ();
    0x00015b50 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b52 blx 0xe824                                                                                                |     fcn_0000e824 ();
    0x00015b56 b 0x1598e                                                                                                 |     goto label_0;
                                                                                                                         | label_20:
    0x00015b58 ldr r3, [pc, 0x2bc]                                                                                       |     r3 = *(0x15e18);
    0x00015b5a ldr.w fp, [r5, r3]                                                                                        |     fp = *((r5 + r3));
    0x00015b5e b 0x1599c                                                                                                 |     goto label_1;
                                                                                                                         | label_28:
    0x00015b60 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b62 blx 0xed90                                                                                                |     r0 = fcn_0000ed90 ();
    0x00015b66 cmp r0, 0                                                                                                 |     
                                                                                                                         |     if (r0 == 0) {
    0x00015b68 beq 0x15a88                                                                                               |         goto label_2;
                                                                                                                         |     }
    0x00015b6a ldr r3, [pc, 0x2ac]                                                                                       |     r3 = *(0x15e1a);
    0x00015b6c ldr r0, [r5, r3]                                                                                          |     r0 = *((r5 + r3));
    0x00015b6e ldr r3, [pc, 0x2ac]                                                                                       |     r3 = *(0x15e1e);
    0x00015b70 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015b74 str.w fp, [r0, 4]                                                                                         |     __asm ("str.w fp, [r0, 4]");
    0x00015b78 str r2, [r0]                                                                                              |     *(r0) = r2;
    0x00015b7a ldr r2, [pc, 0x2a8]                                                                                       |     
    0x00015b7c strb.w fp, [r0, 8]                                                                                        |     *((r0 + 8)) = fp;
    0x00015b80 ldr r1, [r5, r3]                                                                                          |     r1 = *((r5 + r3));
    0x00015b82 add r2, pc                                                                                                |     r2 = 0x2b9ac;
    0x00015b84 blx 0xe620                                                                                                |     fcn_0000e620 ();
    0x00015b88 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b8a blx 0xe824                                                                                                |     fcn_0000e824 ();
    0x00015b8e b 0x15a88                                                                                                 |     goto label_2;
                                                                                                                         | label_29:
    0x00015b90 ldr r3, [pc, 0x284]                                                                                       |     r3 = *(0x15e18);
    0x00015b92 ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x00015b94 b 0x15a90                                                                                                 |     goto label_3;
                                                                                                                         | label_17:
    0x00015b96 add.w r3, r8, 4                                                                                           |     r3 = r8 + 4;
    0x00015b9a dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015b9e ldrex r1, [r3]                                                                                            |         __asm ("ldrex r1, [r3]");
    0x00015ba2 adds r1, 1                                                                                                |         r1++;
    0x00015ba4 strex r2, r1, [r3]                                                                                        |         __asm ("strex r2, r1, [r3]");
    0x00015ba8 cmp r2, 0                                                                                                 |         
    0x00015baa bne 0x15b9e                                                                                               |         
                                                                                                                         |     } while (r2 != 0);
    0x00015bac dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015bb0 b 0x15936                                                                                                 |     goto label_4;
                                                                                                                         | label_18:
    0x00015bb2 add.w r3, r8, 4                                                                                           |     r3 = r8 + 4;
    0x00015bb6 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015bba ldrex r1, [r3]                                                                                            |         __asm ("ldrex r1, [r3]");
    0x00015bbe adds r1, 1                                                                                                |         r1++;
    0x00015bc0 strex r2, r1, [r3]                                                                                        |         __asm ("strex r2, r1, [r3]");
    0x00015bc4 cmp r2, 0                                                                                                 |         
    0x00015bc6 bne 0x15bba                                                                                               |         
                                                                                                                         |     } while (r2 != 0);
    0x00015bc8 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015bcc b 0x15978                                                                                                 |     goto label_5;
                                                                                                                         | label_22:
    0x00015bce ldr r3, [r0]                                                                                              |     r3 = *(r0);
    0x00015bd0 str r0, [sp, 0x14]                                                                                        |     var_14h = r0;
    0x00015bd2 ldr r3, [r3, 8]                                                                                           |     r3 = *((r3 + 8));
    0x00015bd4 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015bd6 ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015bda ldr r0, [sp, 0x14]                                                                                        |     r0 = var_14h;
    0x00015bdc cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015bde beq 0x15cd2                                                                                               |         goto label_36;
                                                                                                                         |     }
    0x00015be0 ldr r3, [r0, 8]                                                                                           |     r3 = *((r0 + 8));
    0x00015be2 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015be4 str r2, [r0, 8]                                                                                           |     *((r0 + 8)) = r2;
                                                                                                                         | label_14:
    0x00015be6 cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 != 1) {
    0x00015be8 bne.w 0x159fe                                                                                             |         goto label_6;
                                                                                                                         |     }
    0x00015bec ldr r3, [r0]                                                                                              |     r3 = *(r0);
    0x00015bee ldr r3, [r3, 0xc]                                                                                         |     r3 = *((r3 + 0xc));
    0x00015bf0 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t) (r3);
    0x00015bf2 b 0x159fe                                                                                                 |     goto label_6;
                                                                                                                         | label_27:
    0x00015bf4 ldr r3, [r4]                                                                                              |     r3 = *(r4);
    0x00015bf6 mov r0, r4                                                                                                |     r0 = r4;
    0x00015bf8 ldr r3, [r3, 8]                                                                                           |     r3 = *((r3 + 8));
    0x00015bfa blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015bfc ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015c00 cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015c02 beq.w 0x15d0c                                                                                             |         goto label_37;
                                                                                                                         |     }
    0x00015c06 ldr r3, [r4, 8]                                                                                           |     r3 = *((r4 + 8));
    0x00015c08 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015c0a str r2, [r4, 8]                                                                                           |     *((r4 + 8)) = r2;
                                                                                                                         | label_16:
    0x00015c0c cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 != 1) {
    0x00015c0e bne.w 0x15a64                                                                                             |         goto label_7;
                                                                                                                         |     }
    0x00015c12 ldr r3, [r4]                                                                                              |     r3 = *(r4);
    0x00015c14 mov r0, r4                                                                                                |     r0 = r4;
    0x00015c16 ldr r3, [r3, 0xc]                                                                                         |     r3 = *((r3 + 0xc));
    0x00015c18 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015c1a b 0x15a64                                                                                                 |     goto label_7;
                                                                                                                         | label_25:
    0x00015c1c ldr.w r3, [r8]                                                                                            |     r3 = *(r8);
    0x00015c20 mov r0, r8                                                                                                |     r0 = r8;
    0x00015c22 ldr r3, [r3, 8]                                                                                           |     r3 = *((r3 + 8));
    0x00015c24 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015c26 ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015c2a cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015c2c beq 0x15cf0                                                                                               |         goto label_38;
                                                                                                                         |     }
    0x00015c2e ldr.w r3, [r8, 8]                                                                                         |     r3 = *((r8 + 8));
    0x00015c32 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015c34 str.w r2, [r8, 8]                                                                                         |     __asm ("str.w r2, [r8, 8]");
                                                                                                                         | label_15:
    0x00015c38 cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 != 1) {
    0x00015c3a bne.w 0x15a32                                                                                             |         goto label_8;
                                                                                                                         |     }
    0x00015c3e ldr.w r3, [r8]                                                                                            |     r3 = *(r8);
    0x00015c42 mov r0, r8                                                                                                |     r0 = r8;
    0x00015c44 ldr r3, [r3, 0xc]                                                                                         |     r3 = *((r3 + 0xc));
    0x00015c46 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015c48 b 0x15a32                                                                                                 |     goto label_8;
                                                                                                                         | label_24:
    0x00015c4a add.w r2, r8, 4                                                                                           |     r2 = r8 + 4;
    0x00015c4e dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015c52 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015c56 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015c58 strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015c5c cmp r0, 0                                                                                                 |         
    0x00015c5e bne 0x15c52                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015c60 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015c64 b 0x15a2c                                                                                                 |     goto label_9;
                                                                                                                         | label_26:
    0x00015c66 adds r2, r4, 4                                                                                            |     r2 = r4 + 4;
    0x00015c68 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015c6c ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015c70 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015c72 strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015c76 cmp r0, 0                                                                                                 |         
    0x00015c78 bne 0x15c6c                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015c7a dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015c7e b 0x15a5e                                                                                                 |     goto label_10;
                                                                                                                         | label_21:
    0x00015c80 adds r2, r0, 4                                                                                            |     r2 = r0 + 4;
    0x00015c82 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015c86 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015c8a subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015c8c strex ip, r1, [r2]                                                                                        |         __asm ("strex ip, r1, [r2]");
    0x00015c90 cmp.w ip, 0                                                                                               |         
    0x00015c94 bne 0x15c86                                                                                               |         
                                                                                                                         |     } while (ip != 0);
    0x00015c96 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015c9a b 0x159f8                                                                                                 |     goto label_11;
                                                                                                                         | label_35:
    0x00015c9c adds r4, 4                                                                                                |     r4 += 4;
    0x00015c9e dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015ca2 ldrex r2, [r4]                                                                                            |         __asm ("ldrex r2, [r4]");
    0x00015ca6 adds r2, 1                                                                                                |         r2++;
    0x00015ca8 strex r1, r2, [r4]                                                                                        |         __asm ("strex r1, r2, [r4]");
    0x00015cac cmp r1, 0                                                                                                 |         
    0x00015cae bne 0x15ca2                                                                                               |         
                                                                                                                         |     } while (r1 != 0);
    0x00015cb0 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015cb4 b 0x15a44                                                                                                 |     goto label_12;
                                                                                                                         | label_32:
    0x00015cb6 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015cba dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015cbe ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015cc2 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015cc4 strex r4, r1, [r2]                                                                                        |         __asm ("strex r4, r1, [r2]");
    0x00015cc8 cmp r4, 0                                                                                                 |         
    0x00015cca bne 0x15cbe                                                                                               |         
                                                                                                                         |     } while (r4 != 0);
    0x00015ccc dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015cd0 b 0x15ae2                                                                                                 |     goto label_13;
                                                                                                                         | label_36:
    0x00015cd2 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015cd6 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015cda ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015cde subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015ce0 strex ip, r1, [r2]                                                                                        |         __asm ("strex ip, r1, [r2]");
    0x00015ce4 cmp.w ip, 0                                                                                               |         
    0x00015ce8 bne 0x15cda                                                                                               |         
                                                                                                                         |     } while (ip != 0);
    0x00015cea dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015cee b 0x15be6                                                                                                 |     goto label_14;
                                                                                                                         | label_38:
    0x00015cf0 add.w r2, r8, 8                                                                                           |     r2 = r8 + 8;
    0x00015cf4 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015cf8 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015cfc subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015cfe strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015d02 cmp r0, 0                                                                                                 |         
    0x00015d04 bne 0x15cf8                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015d06 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015d0a b 0x15c38                                                                                                 |     goto label_15;
                                                                                                                         | label_37:
    0x00015d0c add.w r2, r4, 8                                                                                           |     r2 = r4 + 8;
    0x00015d10 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015d14 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015d18 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015d1a strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015d1e cmp r0, 0                                                                                                 |         
    0x00015d20 bne 0x15d14                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015d22 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015d26 b 0x15c0c                                                                                                 |     goto label_16;
                                                                                                                         | label_30:
    0x00015d28 ldr.w sb, [r6, 4]                                                                                         |     sb = *((r6 + 4));
    0x00015d2c cmp.w sb, 0                                                                                               |     
                                                                                                                         |     if (sb != 0) {
    0x00015d30 beq 0x15d38                                                                                               |         
    0x00015d32 mov r0, sb                                                                                                |         r0 = sb;
    0x00015d34 bl 0x18fb0                                                                                                |         fcn_00018fb0 (r0);
                                                                                                                         |     }
    0x00015d38 ldr r3, [r7]                                                                                              |     r3 = *(r7);
    0x00015d3a mov r1, r8                                                                                                |     r1 = r8;
    0x00015d3c mov r0, r7                                                                                                |     r0 = r7;
    0x00015d3e ldr r3, [r3]                                                                                              |     r3 = *(r3);
    0x00015d40 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00015d42 cmp.w sb, 0                                                                                               |     
                                                                                                                         |     if (sb != 0) {
    0x00015d46 beq 0x15d4e                                                                                               |         
    0x00015d48 mov r0, sb                                                                                                |         r0 = sb;
    0x00015d4a bl 0x18a84                                                                                                |         fcn_00018a84 (r0);
                                                                                                                         |     }
    0x00015d4e movs r0, 0x28                                                                                             |     r0 = 0x28;
    0x00015d50 blx 0xe764                                                                                                |     fcn_0000e764 ();
    0x00015d54 mov r1, r4                                                                                                |     r1 = r4;
    0x00015d56 mov r4, r0                                                                                                |     r4 = r0;
    0x00015d58 bl 0x17aa8                                                                                                |     fcn_00017aa8 (r0, r1);
    0x00015d5c ldr r2, [pc, 0xc8]                                                                                        |     r2 = *(0x15e28);
    0x00015d5e mov r0, r4                                                                                                |     r0 = r4;
    0x00015d60 ldr r3, [pc, 0xc8]                                                                                        |     r3 = *(0x15e2c);
    0x00015d62 ldr r2, [r5, r2]                                                                                          |     r2 = *((r5 + r2));
    0x00015d64 ldr r1, [r5, r3]                                                                                          |     r1 = *((r5 + r3));
    0x00015d66 blx 0xed0c                                                                                                |     fcn_0000ed0c ();
                                                                                                                         | label_34:
    0x00015d6a blx 0xea48                                                                                                |     fcn_0000ea48 ();
                                                                                                                         | label_31:
    0x00015d6e blx 0xe830                                                                                                |     fcn_0000e830 ();
    0x00015d72 ldr r0, [sp, 0x24]                                                                                        |     r0 = var_24h;
                                                                                                                         |     if (r0 == 0) {
    0x00015d74 cbz r0, 0x15d98                                                                                           |         goto label_39;
                                                                                                                         |     }
    0x00015d76 bl 0x18a84                                                                                                |     fcn_00018a84 (r0);
    0x00015d7a b 0x15d98                                                                                                 |     
                                                                                                                         |     while (1) {
                                                                                                                         | label_39:
    0x00015d98 ldr r0, [r6, 4]                                                                                           |         r0 = *((r6 + 4));
                                                                                                                         |         if (r0 != 0) {
    0x00015d9a cbz r0, 0x15da0                                                                                           |             
    0x00015d9c bl 0x18a84                                                                                                |             r0 = fcn_00018a84 (r0);
                                                                                                                         |         }
    0x00015da0 blx 0xea54                                                                                                |         fcn_0000ea54 ();
    0x00015da4 b 0x15d98                                                                                                 |         
                                                                                                                         |     }
                                                                                                                         | }
    ; assembly                                                                                                           | /* r2dec pseudo code output */
                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x158d4 */
                                                                                                                         | #include <stdint.h>
                                                                                                                         |  
    ; (fcn) method.mqtt::async_client.publish_std::shared_ptr_mqtt::message_const___void__mqtt::iaction_listener_ ()     | void method_mqtt::async_client_publish_std::shared_ptr_mqtt::message_const_void_mqtt::iaction_listener_ (int16_t arg_a0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                         |     int16_t var_0h;
                                                                                                                         |     int16_t var_4h;
                                                                                                                         |     int16_t var_8h;
                                                                                                                         |     int16_t var_ch;
                                                                                                                         |     int16_t var_10h;
                                                                                                                         |     int16_t var_14h;
                                                                                                                         |     int16_t var_18h;
                                                                                                                         |     int16_t var_1ch;
                                                                                                                         |     int16_t var_24h;
                                                                                                                         |     int16_t var_28h;
                                                                                                                         |     int16_t var_3ch;
                                                                                                                         |     int16_t var_70h;
                                                                                                                         |     int16_t var_74h;
                                                                                                                         |     r0 = arg1;
                                                                                                                         |     r1 = arg2;
                                                                                                                         |     r2 = arg3;
                                                                                                                         |     r3 = arg4;
                                                                                                                         |     /* mqtt::async_client::publish(std::shared_ptr<qtt::message const>, void*, mqtt::iaction_listener&) */
    0x000158d4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                               |     
    0x000158d8 sub sp, 0x7c                                                                                              |     
    0x000158da mov r4, r2                                                                                                |     r4 = r2;
    0x000158dc str r2, [sp, 0xc]                                                                                         |     var_ch = r2;
    0x000158de mov r7, r1                                                                                                |     r7 = r1;
    0x000158e0 mov r6, r0                                                                                                |     r6 = r0;
    0x000158e2 ldr.w r2, [pc, 0x50c]                                                                                     |     r2 = *(0x00015df0);
    0x000158e6 str r3, [sp, 0x18]                                                                                        |     var_18h = r3;
    0x000158e8 ldr r1, [sp, 0xa0]                                                                                        |     r1 = *(arg_a0h);
    0x000158ea ldr.w r3, [pc, 0x508]                                                                                     |     
    0x000158ee add r2, pc                                                                                                |     r2 += pc;
    0x000158f0 ldr.w r5, [pc, 0x504]                                                                                     |     
    0x000158f4 str r1, [sp, 0x1c]                                                                                        |     var_1ch = r1;
    0x000158f6 ldr r3, [r2, r3]                                                                                          |     r3 = *((r2 + r3));
    0x000158f8 ldr.w r8, [r4, 4]                                                                                         |     r8 = *((r4 + 4));
    0x000158fc add r5, pc                                                                                                |     r5 = 0x2b6f8;
    0x000158fe ldr r3, [r3]                                                                                              |     r3 = *(0x15df6);
    0x00015900 str r3, [sp, 0x74]                                                                                        |     var_74h = r3;
    0x00015902 mov.w r3, 0                                                                                               |     r3 = 0;
    0x00015906 ldr r3, [r7]                                                                                              |     r3 = *(r7);
    0x00015908 ldr r3, [r3, -0x94]                                                                                       |     r3 = *((r3 - 0x94));
    0x0001590c adds r1, r7, r3                                                                                           |     r1 = r7 + r3;
    0x0001590e ldr r3, [r4]                                                                                              |     r3 = *(r4);
    0x00015910 str r1, [sp, 0x14]                                                                                        |     var_14h = r1;
    0x00015912 str r3, [sp, 8]                                                                                           |     var_8h = r3;
    0x00015914 cmp.w r8, 0                                                                                               |     
                                                                                                                         |     if (r8 != 0) {
    0x00015918 beq 0x15936                                                                                               |         
    0x0001591a ldr.w r3, [pc, 0x4e0]                                                                                     |         r3 = *(0x15dfe);
    0x0001591e ldr.w sb, [r5, r3]                                                                                        |         sb = *((r5 + r3));
    0x00015922 ldrb.w r3, [sb]                                                                                           |         r3 = *(sb);
    0x00015926 cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x00015928 beq.w 0x15b96                                                                                             |             goto label_17;
                                                                                                                         |         }
    0x0001592c ldr.w r3, [r8, 4]                                                                                         |         r3 = *((r8 + 4));
    0x00015930 adds r3, 1                                                                                                |         r3++;
    0x00015932 str.w r3, [r8, 4]                                                                                         |         __asm ("str.w r3, [r8, 4]");
                                                                                                                         |     }
                                                                                                                         | label_4:
    0x00015936 movs r3, 0                                                                                                |     r3 = 0;
    0x00015938 movs r0, 0xb8                                                                                             |     r0 = 0xb8;
    0x0001593a str r3, [r6]                                                                                              |     *(r6) = r3;
    0x0001593c blx 0xe5ec                                                                                                |     fcn_0000e5ec ();
    0x00015940 ldr.w r3, [pc, 0x4bc]                                                                                     |     r3 = *(0x15e00);
    0x00015944 movs r2, 1                                                                                                |     r2 = 1;
    0x00015946 strd r2, r2, [r0, 4]                                                                                      |     __asm ("strd r2, r2, [r0, 4]");
    0x0001594a mov sl, r0                                                                                                |     sl = r0;
    0x0001594c mov r4, r0                                                                                                |     r4 = r0;
    0x0001594e ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x00015950 adds r3, 8                                                                                                |     r3 += 8;
    0x00015952 str r3, [sl], 0x10                                                                                        |     *(sl) = r3;
                                                                                                                         |     sl += 0x10;
    0x00015956 cmp.w r8, 0                                                                                               |     
                                                                                                                         |     if (r8 != 0) {
    0x0001595a beq 0x15978                                                                                               |         
    0x0001595c ldr.w r3, [pc, 0x49c]                                                                                     |         r3 = *(0x15dfc);
    0x00015960 ldr.w sb, [r5, r3]                                                                                        |         sb = *((r5 + r3));
    0x00015964 ldrb.w r3, [sb]                                                                                           |         r3 = *(sb);
    0x00015968 cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x0001596a beq.w 0x15bb2                                                                                             |             goto label_18;
                                                                                                                         |         }
    0x0001596e ldr.w r3, [r8, 4]                                                                                         |         r3 = *((r8 + 4));
    0x00015972 add r3, r2                                                                                                |         r3 += r2;
    0x00015974 str.w r3, [r8, 4]                                                                                         |         __asm ("str.w r3, [r8, 4]");
                                                                                                                         |     }
                                                                                                                         | label_5:
    0x00015978 ldr.w r3, [pc, 0x488]                                                                                     |     
    0x0001597c ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x0001597e str r3, [sp, 0x10]                                                                                        |     var_10h = r3;
    0x00015980 ldr r3, [r3]                                                                                              |     r3 = *(0x15e04);
    0x00015982 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015986 ands sb, r3, 1                                                                                            |     sb = r3 & 1;
                                                                                                                         |     if (sb == r3) {
    0x0001598a beq.w 0x15b26                                                                                             |         goto label_19;
                                                                                                                         |     }
                                                                                                                         | label_0:
    0x0001598e ldr r3, [sp, 8]                                                                                           |     r3 = var_8h;
    0x00015990 ldr.w fp, [r3, 0x30]                                                                                      |     fp = *((r3 + 0x30));
    0x00015994 cmp.w fp, 0                                                                                               |     
                                                                                                                         |     if (fp == 0) {
    0x00015998 beq.w 0x15b58                                                                                             |         goto label_20;
                                                                                                                         |     }
                                                                                                                         | label_1:
    0x0001599c movs r0, 0x24                                                                                             |     r0 = 0x24;
    0x0001599e blx 0xe5ec                                                                                                |     fcn_0000e5ec ();
    0x000159a2 ldr.w r3, [pc, 0x464]                                                                                     |     r3 = *(0x15e0a);
    0x000159a6 movs r2, 1                                                                                                |     r2 = 1;
    0x000159a8 strd r2, r2, [r0, 4]                                                                                      |     __asm ("strd r2, r2, [r0, 4]");
    0x000159ac mov r1, fp                                                                                                |     r1 = fp;
    0x000159ae mov fp, r0                                                                                                |     
    0x000159b0 mov sb, r0                                                                                                |     sb = r0;
    0x000159b2 ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x000159b4 adds r3, 8                                                                                                |     r3 += 8;
    0x000159b6 str r3, [fp], 0xc                                                                                         |     *(fp) = r3;
                                                                                                                         |     fp += 0xc;
    0x000159ba mov r0, fp                                                                                                |     r0 = fp;
    0x000159bc blx 0xee70                                                                                                |     pthread_mutex_unlock ();
    0x000159c0 ldr r3, [sp, 0x1c]                                                                                        |     r3 = var_1ch;
    0x000159c2 movs r1, 2                                                                                                |     r1 = 2;
    0x000159c4 strd fp, sb, [sp, 0x20]                                                                                   |     __asm ("strd fp, sb, [var_24h]");
    0x000159c8 add.w fp, sp, 0x20                                                                                        |     
    0x000159cc ldr r2, [sp, 0x14]                                                                                        |     r2 = var_14h;
    0x000159ce mov r0, sl                                                                                                |     r0 = sl;
    0x000159d0 str r3, [sp, 4]                                                                                           |     var_4h = r3;
    0x000159d2 ldr r3, [sp, 0x18]                                                                                        |     r3 = var_18h;
    0x000159d4 str r3, [sp]                                                                                              |     *(sp) = r3;
    0x000159d6 mov r3, fp                                                                                                |     r3 = fp;
    0x000159d8 blx 0xe5d0                                                                                                |     fcn_0000e5d0 ();
    0x000159dc ldr r0, [sp, 0x24]                                                                                        |     r0 = var_24h;
    0x000159de ldr.w r3, [pc, 0x41c]                                                                                     |     r3 = *(0x15dfe);
    0x000159e2 ldr.w sb, [r5, r3]                                                                                        |     sb = *((r5 + r3));
                                                                                                                         |     if (r0 != 0) {
    0x000159e6 cbz r0, 0x159fe                                                                                           |         
    0x000159e8 ldrb.w r3, [sb]                                                                                           |         r3 = *(sb);
    0x000159ec cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x000159ee beq.w 0x15c80                                                                                             |             goto label_21;
                                                                                                                         |         }
    0x000159f2 ldr r3, [r0, 4]                                                                                           |         r3 = *((r0 + 4));
    0x000159f4 subs r2, r3, 1                                                                                            |         r2 = r3 - 1;
    0x000159f6 str r2, [r0, 4]                                                                                           |         *((r0 + 4)) = r2;
                                                                                                                         | label_11:
    0x000159f8 cmp r3, 1                                                                                                 |         
                                                                                                                         |         if (r3 == 1) {
    0x000159fa beq.w 0x15bce                                                                                             |             goto label_22;
                                                                                                                         |         }
                                                                                                                         |     }
                                                                                                                         | label_6:
    0x000159fe ldr.w r3, [pc, 0x40c]                                                                                     |     r3 = *(0x15e0e);
    0x00015a02 ldr r2, [sp, 8]                                                                                           |     r2 = var_8h;
    0x00015a04 ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x00015a06 strd r2, r8, [r4, 0xb0]                                                                                   |     __asm ("strd r2, r8, [r4, 0xb0]");
    0x00015a0a strd sl, r4, [r6]                                                                                         |     __asm ("strd sl, r4, [r6]");
    0x00015a0e adds r3, 8                                                                                                |     r3 += 8;
    0x00015a10 str r3, [r4, 0x10]                                                                                        |     *((r4 + 0x10)) = r3;
    0x00015a12 cmp.w r8, 0                                                                                               |     
                                                                                                                         |     if (r8 == 0) {
    0x00015a16 beq 0x15b0a                                                                                               |         goto label_23;
                                                                                                                         |     }
    0x00015a18 ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015a1c cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015a1e beq.w 0x15c4a                                                                                             |         goto label_24;
                                                                                                                         |     }
    0x00015a22 ldr.w r3, [r8, 4]                                                                                         |     r3 = *((r8 + 4));
    0x00015a26 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015a28 str.w r2, [r8, 4]                                                                                         |     __asm ("str.w r2, [r8, 4]");
                                                                                                                         | label_9:
    0x00015a2c cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 == 1) {
    0x00015a2e beq.w 0x15c1c                                                                                             |         goto label_25;
                                                                                                                         |     }
                                                                                                                         | label_8:
    0x00015a32 ldrd r2, r4, [r6]                                                                                         |     __asm ("ldrd r2, r4, [r6]");
    0x00015a36 ldr r3, [r7]                                                                                              |     r3 = *(r7);
    0x00015a38 ldr.w r3, [r3, 0x90]                                                                                      |     r3 = *((r3 + 0x90));
    0x00015a3c strd r2, r4, [sp, 0x20]                                                                                   |     __asm ("strd r2, r4, [var_24h]");
    0x00015a40 cmp r4, 0                                                                                                 |     
    0x00015a42 bne 0x15b14                                                                                               |     
                                                                                                                         |     while (1) {
                                                                                                                         | label_12:
    0x00015a44 mov r1, fp                                                                                                |         r1 = fp;
    0x00015a46 mov r0, r7                                                                                                |         r0 = r7;
    0x00015a48 blx r3                                                                                                    |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00015a4a ldr r4, [sp, 0x24]                                                                                        |         r4 = var_24h;
                                                                                                                         |         if (r4 != 0) {
    0x00015a4c cbz r4, 0x15a64                                                                                           |             
    0x00015a4e ldrb.w r3, [sb]                                                                                           |             r3 = *(sb);
    0x00015a52 cmp r3, 0                                                                                                 |             
                                                                                                                         |             if (r3 == 0) {
    0x00015a54 beq.w 0x15c66                                                                                             |                 goto label_26;
                                                                                                                         |             }
    0x00015a58 ldr r3, [r4, 4]                                                                                           |             r3 = *((r4 + 4));
    0x00015a5a subs r2, r3, 1                                                                                            |             r2 = r3 - 1;
    0x00015a5c str r2, [r4, 4]                                                                                           |             *((r4 + 4)) = r2;
                                                                                                                         | label_10:
    0x00015a5e cmp r3, 1                                                                                                 |             
                                                                                                                         |             if (r3 == 1) {
    0x00015a60 beq.w 0x15bf4                                                                                             |                 goto label_27;
                                                                                                                         |             }
                                                                                                                         |         }
                                                                                                                         | label_7:
    0x00015a64 add r4, sp, 0x28                                                                                          |         r4 += var_28h;
    0x00015a66 ldr r2, [r7, 0x50]                                                                                        |         r2 = *((r7 + 0x50));
    0x00015a68 mov r1, r6                                                                                                |         r1 = r6;
    0x00015a6a mov r0, r4                                                                                                |         r0 = r4;
    0x00015a6c blx 0xe794                                                                                                |         fcn_0000e794 ();
    0x00015a70 ldr r3, [sp, 0xc]                                                                                         |         r3 = var_ch;
    0x00015a72 ldr.w r8, [r7, 0x1c]                                                                                      |         r8 = *((r7 + 0x1c));
    0x00015a76 ldr.w sl, [r3]                                                                                            |         sl = *(r3);
    0x00015a7a ldr r3, [sp, 0x10]                                                                                        |         r3 = var_10h;
    0x00015a7c ldr r3, [r3]                                                                                              |         r3 = *(r3);
    0x00015a7e dmb ish                                                                                                   |         __asm ("dmb ish");
    0x00015a82 ands fp, r3, 1                                                                                            |         
                                                                                                                         |         if (fp == r3) {
    0x00015a86 beq 0x15b60                                                                                               |             goto label_28;
                                                                                                                         |         }
                                                                                                                         | label_2:
    0x00015a88 ldr.w r3, [sl, 0x30]                                                                                      |         r3 = *((sl + 0x30));
    0x00015a8c cmp r3, 0                                                                                                 |         
                                                                                                                         |         if (r3 == 0) {
    0x00015a8e beq 0x15b90                                                                                               |             goto label_29;
                                                                                                                         |         }
                                                                                                                         | label_3:
    0x00015a90 ldr r2, [sp, 0xc]                                                                                         |         r2 = var_ch;
    0x00015a92 mov r0, r8                                                                                                |         r0 = r8;
    0x00015a94 ldr r1, [r3]                                                                                              |         r1 = *(r3);
    0x00015a96 mov r3, r4                                                                                                |         r3 = r4;
    0x00015a98 ldr r2, [r2]                                                                                              |         r2 = *(r2);
    0x00015a9a blx 0xebb8                                                                                                |         cxa_rethrow ();
    0x00015a9e ldr.w r8, [r6]                                                                                            |         r8 = *(r6);
    0x00015aa2 mov r4, r0                                                                                                |         r4 = r0;
    0x00015aa4 cmp r0, 0                                                                                                 |         
                                                                                                                         |         if (r0 != 0) {
    0x00015aa6 bne.w 0x15d28                                                                                             |             goto label_30;
                                                                                                                         |         }
    0x00015aaa ldr r3, [pc, 0x364]                                                                                       |         r3 = *(0x15e12);
    0x00015aac ldr r7, [sp, 0x3c]                                                                                        |         r7 = var_3ch;
    0x00015aae ldr r4, [r5, r3]                                                                                          |         r4 = *((r5 + r3));
    0x00015ab0 add.w r5, r8, 4                                                                                           |         r5 = r8 + 4;
                                                                                                                         |         if (r4 != 0) {
    0x00015ab4 cbz r4, 0x15ac2                                                                                           |             
    0x00015ab6 mov r0, r5                                                                                                |             r0 = r5;
    0x00015ab8 blx 0xe5f8                                                                                                |             r0 = fcn_0000e5f8 ();
    0x00015abc cmp r0, 0                                                                                                 |             
                                                                                                                         |             if (r0 != 0) {
    0x00015abe bne.w 0x15d6e                                                                                             |                 goto label_31;
                                                                                                                         |             }
                                                                                                                         |         }
    0x00015ac2 str.w r7, [r8, 0x78]                                                                                      |         __asm ("str.w r7, [r8, 0x78]");
                                                                                                                         |         if (r4 != 0) {
    0x00015ac6 cbz r4, 0x15ace                                                                                           |             
    0x00015ac8 mov r0, r5                                                                                                |             r0 = r5;
    0x00015aca blx 0xeea4                                                                                                |             fcn_0000eea4 ();
                                                                                                                         |         }
    0x00015ace ldr r0, [sp, 0x70]                                                                                        |         r0 = var_70h;
                                                                                                                         |         if (r0 != 0) {
    0x00015ad0 cbz r0, 0x15aec                                                                                           |             
    0x00015ad2 ldrb.w r3, [sb]                                                                                           |             r3 = *(sb);
    0x00015ad6 cmp r3, 0                                                                                                 |             
                                                                                                                         |             if (r3 == 0) {
    0x00015ad8 beq.w 0x15cb6                                                                                             |                 goto label_32;
                                                                                                                         |             }
    0x00015adc ldr r3, [r0, 8]                                                                                           |             r3 = *((r0 + 8));
    0x00015ade subs r2, r3, 1                                                                                            |             r2 = r3 - 1;
    0x00015ae0 str r2, [r0, 8]                                                                                           |             *((r0 + 8)) = r2;
                                                                                                                         | label_13:
    0x00015ae2 cmp r3, 1                                                                                                 |             
                                                                                                                         |             if (r3 != 1) {
    0x00015ae4 bne 0x15aec                                                                                               |                 goto label_33;
                                                                                                                         |             }
    0x00015ae6 ldr r3, [r0]                                                                                              |             r3 = *(r0);
    0x00015ae8 ldr r3, [r3, 0xc]                                                                                         |             r3 = *((r3 + 0xc));
    0x00015aea blx r3                                                                                                    |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                         |         }
                                                                                                                         | label_33:
    0x00015aec ldr r2, [pc, 0x324]                                                                                       |         
    0x00015aee ldr r3, [pc, 0x304]                                                                                       |         r3 = *(0x15df6);
    0x00015af0 add r2, pc                                                                                                |         r2 = 0x2b908;
    0x00015af2 ldr r3, [r2, r3]                                                                                          |         r3 = imp._ZTINSt6thread6_StateE;
    0x00015af4 ldr r2, [r3]                                                                                              |         r2 = imp._ZTINSt6thread6_StateE;
    0x00015af6 ldr r3, [sp, 0x74]                                                                                        |         r3 = var_74h;
    0x00015af8 eors r2, r3                                                                                               |         r2 ^= r3;
    0x00015afa mov.w r3, 0                                                                                               |         r3 = 0;
                                                                                                                         |         if (r2 != r3) {
    0x00015afe bne.w 0x15d6a                                                                                             |             goto label_34;
                                                                                                                         |         }
    0x00015b02 mov r0, r6                                                                                                |         r0 = r6;
    0x00015b04 add sp, 0x7c                                                                                              |         
    0x00015b06 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                |         
                                                                                                                         | label_23:
    0x00015b0a ldr r3, [r7]                                                                                              |         r3 = *(r7);
    0x00015b0c ldr.w r3, [r3, 0x90]                                                                                      |         r3 = *((r3 + 0x90));
    0x00015b10 strd sl, r4, [sp, 0x20]                                                                                   |         __asm ("strd sl, r4, [var_24h]");
    0x00015b14 ldrb.w r2, [sb]                                                                                           |         r2 = *(sb);
    0x00015b18 cmp r2, 0                                                                                                 |         
                                                                                                                         |         if (r2 == 0) {
    0x00015b1a beq.w 0x15c9c                                                                                             |             goto label_35;
                                                                                                                         |         }
    0x00015b1e ldr r2, [r4, 4]                                                                                           |         r2 = *((r4 + 4));
    0x00015b20 adds r2, 1                                                                                                |         r2++;
    0x00015b22 str r2, [r4, 4]                                                                                           |         *((r4 + 4)) = r2;
    0x00015b24 b 0x15a44                                                                                                 |         
                                                                                                                         |     }
                                                                                                                         | label_19:
    0x00015b26 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b28 blx 0xed90                                                                                                |     r0 = fcn_0000ed90 ();
    0x00015b2c cmp r0, 0                                                                                                 |     
                                                                                                                         |     if (r0 == 0) {
    0x00015b2e beq.w 0x1598e                                                                                             |         goto label_0;
                                                                                                                         |     }
    0x00015b32 ldr r3, [pc, 0x2e4]                                                                                       |     r3 = *(0x15e1a);
    0x00015b34 ldr r0, [r5, r3]                                                                                          |     r0 = *((r5 + r3));
    0x00015b36 ldr r3, [pc, 0x2e4]                                                                                       |     r3 = *(0x15e1e);
    0x00015b38 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015b3c str.w sb, [r0, 4]                                                                                         |     __asm ("str.w sb, [r0, 4]");
    0x00015b40 str r2, [r0]                                                                                              |     *(r0) = r2;
    0x00015b42 ldr r2, [pc, 0x2dc]                                                                                       |     
    0x00015b44 strb.w sb, [r0, 8]                                                                                        |     *((r0 + 8)) = sb;
    0x00015b48 ldr r1, [r5, r3]                                                                                          |     r1 = *((r5 + r3));
    0x00015b4a add r2, pc                                                                                                |     r2 = 0x2b970;
    0x00015b4c blx 0xe620                                                                                                |     fcn_0000e620 ();
    0x00015b50 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b52 blx 0xe824                                                                                                |     fcn_0000e824 ();
    0x00015b56 b 0x1598e                                                                                                 |     goto label_0;
                                                                                                                         | label_20:
    0x00015b58 ldr r3, [pc, 0x2bc]                                                                                       |     r3 = *(0x15e18);
    0x00015b5a ldr.w fp, [r5, r3]                                                                                        |     fp = *((r5 + r3));
    0x00015b5e b 0x1599c                                                                                                 |     goto label_1;
                                                                                                                         | label_28:
    0x00015b60 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b62 blx 0xed90                                                                                                |     r0 = fcn_0000ed90 ();
    0x00015b66 cmp r0, 0                                                                                                 |     
                                                                                                                         |     if (r0 == 0) {
    0x00015b68 beq 0x15a88                                                                                               |         goto label_2;
                                                                                                                         |     }
    0x00015b6a ldr r3, [pc, 0x2ac]                                                                                       |     r3 = *(0x15e1a);
    0x00015b6c ldr r0, [r5, r3]                                                                                          |     r0 = *((r5 + r3));
    0x00015b6e ldr r3, [pc, 0x2ac]                                                                                       |     r3 = *(0x15e1e);
    0x00015b70 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015b74 str.w fp, [r0, 4]                                                                                         |     __asm ("str.w fp, [r0, 4]");
    0x00015b78 str r2, [r0]                                                                                              |     *(r0) = r2;
    0x00015b7a ldr r2, [pc, 0x2a8]                                                                                       |     
    0x00015b7c strb.w fp, [r0, 8]                                                                                        |     *((r0 + 8)) = fp;
    0x00015b80 ldr r1, [r5, r3]                                                                                          |     r1 = *((r5 + r3));
    0x00015b82 add r2, pc                                                                                                |     r2 = 0x2b9ac;
    0x00015b84 blx 0xe620                                                                                                |     fcn_0000e620 ();
    0x00015b88 ldr r0, [sp, 0x10]                                                                                        |     r0 = var_10h;
    0x00015b8a blx 0xe824                                                                                                |     fcn_0000e824 ();
    0x00015b8e b 0x15a88                                                                                                 |     goto label_2;
                                                                                                                         | label_29:
    0x00015b90 ldr r3, [pc, 0x284]                                                                                       |     r3 = *(0x15e18);
    0x00015b92 ldr r3, [r5, r3]                                                                                          |     r3 = *((r5 + r3));
    0x00015b94 b 0x15a90                                                                                                 |     goto label_3;
                                                                                                                         | label_17:
    0x00015b96 add.w r3, r8, 4                                                                                           |     r3 = r8 + 4;
    0x00015b9a dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015b9e ldrex r1, [r3]                                                                                            |         __asm ("ldrex r1, [r3]");
    0x00015ba2 adds r1, 1                                                                                                |         r1++;
    0x00015ba4 strex r2, r1, [r3]                                                                                        |         __asm ("strex r2, r1, [r3]");
    0x00015ba8 cmp r2, 0                                                                                                 |         
    0x00015baa bne 0x15b9e                                                                                               |         
                                                                                                                         |     } while (r2 != 0);
    0x00015bac dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015bb0 b 0x15936                                                                                                 |     goto label_4;
                                                                                                                         | label_18:
    0x00015bb2 add.w r3, r8, 4                                                                                           |     r3 = r8 + 4;
    0x00015bb6 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015bba ldrex r1, [r3]                                                                                            |         __asm ("ldrex r1, [r3]");
    0x00015bbe adds r1, 1                                                                                                |         r1++;
    0x00015bc0 strex r2, r1, [r3]                                                                                        |         __asm ("strex r2, r1, [r3]");
    0x00015bc4 cmp r2, 0                                                                                                 |         
    0x00015bc6 bne 0x15bba                                                                                               |         
                                                                                                                         |     } while (r2 != 0);
    0x00015bc8 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015bcc b 0x15978                                                                                                 |     goto label_5;
                                                                                                                         | label_22:
    0x00015bce ldr r3, [r0]                                                                                              |     r3 = *(r0);
    0x00015bd0 str r0, [sp, 0x14]                                                                                        |     var_14h = r0;
    0x00015bd2 ldr r3, [r3, 8]                                                                                           |     r3 = *((r3 + 8));
    0x00015bd4 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015bd6 ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015bda ldr r0, [sp, 0x14]                                                                                        |     r0 = var_14h;
    0x00015bdc cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015bde beq 0x15cd2                                                                                               |         goto label_36;
                                                                                                                         |     }
    0x00015be0 ldr r3, [r0, 8]                                                                                           |     r3 = *((r0 + 8));
    0x00015be2 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015be4 str r2, [r0, 8]                                                                                           |     *((r0 + 8)) = r2;
                                                                                                                         | label_14:
    0x00015be6 cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 != 1) {
    0x00015be8 bne.w 0x159fe                                                                                             |         goto label_6;
                                                                                                                         |     }
    0x00015bec ldr r3, [r0]                                                                                              |     r3 = *(r0);
    0x00015bee ldr r3, [r3, 0xc]                                                                                         |     r3 = *((r3 + 0xc));
    0x00015bf0 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t) (r3);
    0x00015bf2 b 0x159fe                                                                                                 |     goto label_6;
                                                                                                                         | label_27:
    0x00015bf4 ldr r3, [r4]                                                                                              |     r3 = *(r4);
    0x00015bf6 mov r0, r4                                                                                                |     r0 = r4;
    0x00015bf8 ldr r3, [r3, 8]                                                                                           |     r3 = *((r3 + 8));
    0x00015bfa blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015bfc ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015c00 cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015c02 beq.w 0x15d0c                                                                                             |         goto label_37;
                                                                                                                         |     }
    0x00015c06 ldr r3, [r4, 8]                                                                                           |     r3 = *((r4 + 8));
    0x00015c08 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015c0a str r2, [r4, 8]                                                                                           |     *((r4 + 8)) = r2;
                                                                                                                         | label_16:
    0x00015c0c cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 != 1) {
    0x00015c0e bne.w 0x15a64                                                                                             |         goto label_7;
                                                                                                                         |     }
    0x00015c12 ldr r3, [r4]                                                                                              |     r3 = *(r4);
    0x00015c14 mov r0, r4                                                                                                |     r0 = r4;
    0x00015c16 ldr r3, [r3, 0xc]                                                                                         |     r3 = *((r3 + 0xc));
    0x00015c18 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015c1a b 0x15a64                                                                                                 |     goto label_7;
                                                                                                                         | label_25:
    0x00015c1c ldr.w r3, [r8]                                                                                            |     r3 = *(r8);
    0x00015c20 mov r0, r8                                                                                                |     r0 = r8;
    0x00015c22 ldr r3, [r3, 8]                                                                                           |     r3 = *((r3 + 8));
    0x00015c24 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015c26 ldrb.w r3, [sb]                                                                                           |     r3 = *(sb);
    0x00015c2a cmp r3, 0                                                                                                 |     
                                                                                                                         |     if (r3 == 0) {
    0x00015c2c beq 0x15cf0                                                                                               |         goto label_38;
                                                                                                                         |     }
    0x00015c2e ldr.w r3, [r8, 8]                                                                                         |     r3 = *((r8 + 8));
    0x00015c32 subs r2, r3, 1                                                                                            |     r2 = r3 - 1;
    0x00015c34 str.w r2, [r8, 8]                                                                                         |     __asm ("str.w r2, [r8, 8]");
                                                                                                                         | label_15:
    0x00015c38 cmp r3, 1                                                                                                 |     
                                                                                                                         |     if (r3 != 1) {
    0x00015c3a bne.w 0x15a32                                                                                             |         goto label_8;
                                                                                                                         |     }
    0x00015c3e ldr.w r3, [r8]                                                                                            |     r3 = *(r8);
    0x00015c42 mov r0, r8                                                                                                |     r0 = r8;
    0x00015c44 ldr r3, [r3, 0xc]                                                                                         |     r3 = *((r3 + 0xc));
    0x00015c46 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015c48 b 0x15a32                                                                                                 |     goto label_8;
                                                                                                                         | label_24:
    0x00015c4a add.w r2, r8, 4                                                                                           |     r2 = r8 + 4;
    0x00015c4e dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015c52 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015c56 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015c58 strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015c5c cmp r0, 0                                                                                                 |         
    0x00015c5e bne 0x15c52                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015c60 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015c64 b 0x15a2c                                                                                                 |     goto label_9;
                                                                                                                         | label_26:
    0x00015c66 adds r2, r4, 4                                                                                            |     r2 = r4 + 4;
    0x00015c68 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015c6c ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015c70 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015c72 strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015c76 cmp r0, 0                                                                                                 |         
    0x00015c78 bne 0x15c6c                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015c7a dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015c7e b 0x15a5e                                                                                                 |     goto label_10;
                                                                                                                         | label_21:
    0x00015c80 adds r2, r0, 4                                                                                            |     r2 = r0 + 4;
    0x00015c82 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015c86 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015c8a subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015c8c strex ip, r1, [r2]                                                                                        |         __asm ("strex ip, r1, [r2]");
    0x00015c90 cmp.w ip, 0                                                                                               |         
    0x00015c94 bne 0x15c86                                                                                               |         
                                                                                                                         |     } while (ip != 0);
    0x00015c96 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015c9a b 0x159f8                                                                                                 |     goto label_11;
                                                                                                                         | label_35:
    0x00015c9c adds r4, 4                                                                                                |     r4 += 4;
    0x00015c9e dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015ca2 ldrex r2, [r4]                                                                                            |         __asm ("ldrex r2, [r4]");
    0x00015ca6 adds r2, 1                                                                                                |         r2++;
    0x00015ca8 strex r1, r2, [r4]                                                                                        |         __asm ("strex r1, r2, [r4]");
    0x00015cac cmp r1, 0                                                                                                 |         
    0x00015cae bne 0x15ca2                                                                                               |         
                                                                                                                         |     } while (r1 != 0);
    0x00015cb0 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015cb4 b 0x15a44                                                                                                 |     goto label_12;
                                                                                                                         | label_32:
    0x00015cb6 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015cba dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015cbe ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015cc2 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015cc4 strex r4, r1, [r2]                                                                                        |         __asm ("strex r4, r1, [r2]");
    0x00015cc8 cmp r4, 0                                                                                                 |         
    0x00015cca bne 0x15cbe                                                                                               |         
                                                                                                                         |     } while (r4 != 0);
    0x00015ccc dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015cd0 b 0x15ae2                                                                                                 |     goto label_13;
                                                                                                                         | label_36:
    0x00015cd2 add.w r2, r0, 8                                                                                           |     r2 = r0 + 8;
    0x00015cd6 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015cda ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015cde subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015ce0 strex ip, r1, [r2]                                                                                        |         __asm ("strex ip, r1, [r2]");
    0x00015ce4 cmp.w ip, 0                                                                                               |         
    0x00015ce8 bne 0x15cda                                                                                               |         
                                                                                                                         |     } while (ip != 0);
    0x00015cea dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015cee b 0x15be6                                                                                                 |     goto label_14;
                                                                                                                         | label_38:
    0x00015cf0 add.w r2, r8, 8                                                                                           |     r2 = r8 + 8;
    0x00015cf4 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015cf8 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015cfc subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015cfe strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015d02 cmp r0, 0                                                                                                 |         
    0x00015d04 bne 0x15cf8                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015d06 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015d0a b 0x15c38                                                                                                 |     goto label_15;
                                                                                                                         | label_37:
    0x00015d0c add.w r2, r4, 8                                                                                           |     r2 = r4 + 8;
    0x00015d10 dmb ish                                                                                                   |     __asm ("dmb ish");
                                                                                                                         |     do {
    0x00015d14 ldrex r3, [r2]                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00015d18 subs r1, r3, 1                                                                                            |         r1 = r3 - 1;
    0x00015d1a strex r0, r1, [r2]                                                                                        |         __asm ("strex r0, r1, [r2]");
    0x00015d1e cmp r0, 0                                                                                                 |         
    0x00015d20 bne 0x15d14                                                                                               |         
                                                                                                                         |     } while (r0 != 0);
    0x00015d22 dmb ish                                                                                                   |     __asm ("dmb ish");
    0x00015d26 b 0x15c0c                                                                                                 |     goto label_16;
                                                                                                                         | label_30:
    0x00015d28 ldr.w sb, [r6, 4]                                                                                         |     sb = *((r6 + 4));
    0x00015d2c cmp.w sb, 0                                                                                               |     
                                                                                                                         |     if (sb != 0) {
    0x00015d30 beq 0x15d38                                                                                               |         
    0x00015d32 mov r0, sb                                                                                                |         r0 = sb;
    0x00015d34 bl 0x18fb0                                                                                                |         fcn_00018fb0 (r0);
                                                                                                                         |     }
    0x00015d38 ldr r3, [r7]                                                                                              |     r3 = *(r7);
    0x00015d3a mov r1, r8                                                                                                |     r1 = r8;
    0x00015d3c mov r0, r7                                                                                                |     r0 = r7;
    0x00015d3e ldr r3, [r3]                                                                                              |     r3 = *(r3);
    0x00015d40 blx r3                                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00015d42 cmp.w sb, 0                                                                                               |     
                                                                                                                         |     if (sb != 0) {
    0x00015d46 beq 0x15d4e                                                                                               |         
    0x00015d48 mov r0, sb                                                                                                |         r0 = sb;
    0x00015d4a bl 0x18a84                                                                                                |         fcn_00018a84 (r0);
                                                                                                                         |     }
    0x00015d4e movs r0, 0x28                                                                                             |     r0 = 0x28;
    0x00015d50 blx 0xe764                                                                                                |     fcn_0000e764 ();
    0x00015d54 mov r1, r4                                                                                                |     r1 = r4;
    0x00015d56 mov r4, r0                                                                                                |     r4 = r0;
    0x00015d58 bl 0x17aa8                                                                                                |     fcn_00017aa8 (r0, r1);
    0x00015d5c ldr r2, [pc, 0xc8]                                                                                        |     r2 = *(0x15e28);
    0x00015d5e mov r0, r4                                                                                                |     r0 = r4;
    0x00015d60 ldr r3, [pc, 0xc8]                                                                                        |     r3 = *(0x15e2c);
    0x00015d62 ldr r2, [r5, r2]                                                                                          |     r2 = *((r5 + r2));
    0x00015d64 ldr r1, [r5, r3]                                                                                          |     r1 = *((r5 + r3));
    0x00015d66 blx 0xed0c                                                                                                |     fcn_0000ed0c ();
                                                                                                                         | label_34:
    0x00015d6a blx 0xea48                                                                                                |     fcn_0000ea48 ();
                                                                                                                         | label_31:
    0x00015d6e blx 0xe830                                                                                                |     fcn_0000e830 ();
    0x00015d72 ldr r0, [sp, 0x24]                                                                                        |     r0 = var_24h;
                                                                                                                         |     if (r0 == 0) {
    0x00015d74 cbz r0, 0x15d98                                                                                           |         goto label_39;
                                                                                                                         |     }
    0x00015d76 bl 0x18a84                                                                                                |     fcn_00018a84 (r0);
    0x00015d7a b 0x15d98                                                                                                 |     
                                                                                                                         |     while (1) {
                                                                                                                         | label_39:
    0x00015d98 ldr r0, [r6, 4]                                                                                           |         r0 = *((r6 + 4));
                                                                                                                         |         if (r0 != 0) {
    0x00015d9a cbz r0, 0x15da0                                                                                           |             
    0x00015d9c bl 0x18a84                                                                                                |             r0 = fcn_00018a84 (r0);
                                                                                                                         |         }
    0x00015da0 blx 0xea54                                                                                                |         fcn_0000ea54 ();
    0x00015da4 b 0x15d98                                                                                                 |         
                                                                                                                         |     }
                                                                                                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x12284 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) method.mqtt::async_client.reconnect__ ()     | void method_mqtt::async_client_reconnect_ (int16_t arg1, int16_t arg2, 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_24h;
                                                         |     int16_t var_2ch;
                                                         |     int16_t var_3ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r3 = arg4;
                                                         |     /* mqtt::async_client::reconnect() */
    0x00012284 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00012288 mov r5, r0                                |     r5 = r0;
    0x0001228a mov r4, r1                                |     r4 = r1;
    0x0001228c ldrd r0, r3, [r1, 0xac]                   |     __asm ("ldrd r0, r3, [r1, 0xac]");
    0x00012290 sub sp, 0x44                              |     
    0x00012292 ldr r1, [pc, 0x248]                       |     
    0x00012294 ldr r2, [pc, 0x248]                       |     r2 = *(0x124e0);
    0x00012296 ldr r7, [pc, 0x24c]                       |     
    0x00012298 add r1, pc                                |     r1 = 0x2477a;
    0x0001229a ldr r2, [r1, r2]                          |     
    0x0001229c add r7, pc                                |     r7 = 0x24786;
    0x0001229e ldr r2, [r2]                              |     r2 = *(0x2477a);
    0x000122a0 str r2, [sp, 0x3c]                        |     var_3ch = r2;
    0x000122a2 mov.w r2, 0                               |     r2 = 0;
    0x000122a6 strd r0, r3, [r5]                         |     __asm ("strd r0, r3, [r5]");
                                                         |     if (r3 != 0) {
    0x000122aa cbz r3, 0x122be                           |         
    0x000122ac ldr r2, [pc, 0x238]                       |         r2 = *(0x124e8);
    0x000122ae ldr r2, [r7, r2]                          |         r2 = *((r7 + r2));
    0x000122b0 ldrb r2, [r2]                             |         r2 = *(r2);
    0x000122b2 cmp r2, 0                                 |         
                                                         |         if (r2 == 0) {
    0x000122b4 beq.w 0x123dc                             |             goto label_6;
                                                         |         }
    0x000122b8 ldr r2, [r3, 4]                           |         r2 = *((r3 + 4));
    0x000122ba adds r2, 1                                |         r2++;
    0x000122bc str r2, [r3, 4]                           |         *((r3 + 4)) = r2;
                                                         |     }
                                                         | label_3:
    0x000122be cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000122c0 beq.w 0x12432                             |         goto label_7;
                                                         |     }
    0x000122c4 blx 0xe788                                |     fcn_0000e788 ();
    0x000122c8 ldr r3, [r5]                              |     r3 = *(r5);
    0x000122ca ldr r2, [r4]                              |     r2 = *(r4);
    0x000122cc ldr.w r2, [r2, 0x8c]                      |     r2 = *((r2 + 0x8c));
    0x000122d0 str r3, [sp, 4]                           |     var_4h = r3;
    0x000122d2 ldr r3, [r5, 4]                           |     r3 = *((r5 + 4));
    0x000122d4 str r3, [sp, 8]                           |     var_8h = r3;
                                                         |     if (r3 != 0) {
    0x000122d6 cbz r3, 0x122e8                           |         
    0x000122d8 ldr r1, [pc, 0x20c]                       |         r1 = *(0x124e8);
    0x000122da ldr r1, [r7, r1]                          |         r1 = *((r7 + r1));
    0x000122dc ldrb r1, [r1]                             |         r1 = *(r1);
    0x000122de cmp r1, 0                                 |         
                                                         |         if (r1 == 0) {
    0x000122e0 beq 0x123c2                               |             goto label_8;
                                                         |         }
    0x000122e2 ldr r1, [r3, 4]                           |         r1 = *((r3 + 4));
    0x000122e4 adds r1, 1                                |         r1++;
    0x000122e6 str r1, [r3, 4]                           |         *((r3 + 4)) = r1;
                                                         |     }
                                                         | label_2:
    0x000122e8 add.w r8, sp, 4                           |     r8 += var_4h;
    0x000122ec mov r0, r4                                |     r0 = r4;
    0x000122ee mov r1, r8                                |     r1 = r8;
    0x000122f0 blx r2                                    |     uint32_t (*r2)(uint32_t, uint32_t) (r0, r1);
    0x000122f2 ldr r6, [sp, 8]                           |     r6 = var_8h;
                                                         |     if (r6 != 0) {
    0x000122f4 cbz r6, 0x1230e                           |         
    0x000122f6 ldr r3, [pc, 0x1f0]                       |         r3 = *(0x124ea);
    0x000122f8 ldr.w sb, [r7, r3]                        |         sb = *((r7 + r3));
    0x000122fc ldrb.w r3, [sb]                           |         r3 = *(sb);
    0x00012300 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x00012302 beq 0x123a6                               |             goto label_9;
                                                         |         }
    0x00012304 ldr r3, [r6, 4]                           |         r3 = *((r6 + 4));
    0x00012306 subs r2, r3, 1                            |         r2 = r3 - 1;
    0x00012308 str r2, [r6, 4]                           |         *((r6 + 4)) = r2;
                                                         | label_1:
    0x0001230a cmp r3, 1                                 |         
                                                         |         if (r3 == 1) {
    0x0001230c beq 0x12384                               |             goto label_10;
                                                         |         }
                                                         |     }
                                                         | label_0:
    0x0001230e ldr r3, [pc, 0x1dc]                       |     r3 = *(0x124ee);
    0x00012310 mov r1, r4                                |     r1 = r4;
    0x00012312 ldr r0, [r4, 0x1c]                        |     r0 = *((r4 + 0x1c));
    0x00012314 ldr r2, [r7, r3]                          |     r2 = *((r7 + r3));
    0x00012316 blx 0xed84                                |     r0 = fcn_0000ed84 ();
    0x0001231a mov r6, r0                                |     r6 = r0;
    0x0001231c cbz r0, 0x1235c                           |     
                                                         |     while (r0 != 0) {
    0x0001231e ldr r0, [r5, 4]                           |         r0 = *((r5 + 4));
    0x00012320 ldr r3, [r4]                              |         r3 = *(r4);
    0x00012322 ldr r2, [r5]                              |         r2 = *(r5);
    0x00012324 ldr.w sb, [r3, 0x94]                      |         sb = *((r3 + 0x94));
    0x00012328 str r0, [sp, 8]                           |         var_8h = r0;
    0x0001232a str r2, [sp, 4]                           |         var_4h = r2;
                                                         |         if (r0 != 0) {
    0x0001232c cbz r0, 0x12332                           |             
    0x0001232e bl 0x18fb0                                |             fcn_00018fb0 (r0);
                                                         |         }
    0x00012332 mov r1, r8                                |         r1 = r8;
    0x00012334 mov r0, r4                                |         r0 = r4;
    0x00012336 blx sb                                    |         sb (r0, r1);
    0x00012338 ldr r0, [sp, 8]                           |         r0 = var_8h;
                                                         |         if (r0 != 0) {
    0x0001233a cbz r0, 0x12340                           |             
    0x0001233c bl 0x18a84                                |             fcn_00018a84 (r0);
                                                         |         }
    0x00012340 movs r0, 0x28                             |         r0 = 0x28;
    0x00012342 blx 0xe764                                |         fcn_0000e764 ();
    0x00012346 mov r1, r6                                |         r1 = r6;
    0x00012348 mov r4, r0                                |         r4 = r0;
    0x0001234a bl 0x17aa8                                |         fcn_00017aa8 (r0, r1);
    0x0001234e ldr r2, [pc, 0x1a0]                       |         r2 = *(0x124f2);
    0x00012350 mov r0, r4                                |         r0 = r4;
    0x00012352 ldr r3, [pc, 0x1a0]                       |         r3 = *(0x124f6);
    0x00012354 ldr r2, [r7, r2]                          |         r2 = *((r7 + r2));
    0x00012356 ldr r1, [r7, r3]                          |         r1 = *((r7 + r3));
    0x00012358 blx 0xed0c                                |         fcn_0000ed0c ();
    0x0001235c ldr r0, [r4, 0x1c]                        |         r0 = *((r4 + 0x1c));
    0x0001235e blx 0xe6b0                                |         r0 = fcn_0000e6b0 ();
    0x00012362 mov r6, r0                                |         r6 = r0;
    0x00012364 cmp r0, 0                                 |         
    0x00012366 bne 0x1231e                               |         
                                                         |     }
    0x00012368 ldr r2, [pc, 0x18c]                       |     
    0x0001236a ldr r3, [pc, 0x174]                       |     r3 = *(0x124e2);
    0x0001236c add r2, pc                                |     r2 = 0x24868;
    0x0001236e ldr r3, [r2, r3]                          |     r3 = *(0x24868);
    0x00012370 ldr r2, [r3]                              |     r2 = *(0x24868);
    0x00012372 ldr r3, [sp, 0x3c]                        |     r3 = var_3ch;
    0x00012374 eors r2, r3                               |     r2 ^= r3;
    0x00012376 mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 != r3) {
    0x0001237a bne 0x12414                               |         goto label_11;
                                                         |     }
    0x0001237c mov r0, r5                                |     r0 = r5;
    0x0001237e add sp, 0x44                              |     
    0x00012380 pop.w {r4, r5, r6, r7, r8, sb, pc}        |     
                                                         | label_10:
    0x00012384 ldr r3, [r6]                              |     r3 = *(r6);
    0x00012386 mov r0, r6                                |     r0 = r6;
    0x00012388 ldr r3, [r3, 8]                           |     r3 = *((r3 + 8));
    0x0001238a blx r3                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001238c ldrb.w r3, [sb]                           |     r3 = *(sb);
                                                         |     if (r3 == 0) {
    0x00012390 cbz r3, 0x123f8                           |         goto label_12;
                                                         |     }
    0x00012392 ldr r3, [r6, 8]                           |     r3 = *((r6 + 8));
    0x00012394 subs r2, r3, 1                            |     r2 = r3 - 1;
    0x00012396 str r2, [r6, 8]                           |     *((r6 + 8)) = r2;
                                                         | label_4:
    0x00012398 cmp r3, 1                                 |     
                                                         |     if (r3 != 1) {
    0x0001239a bne 0x1230e                               |         goto label_0;
                                                         |     }
    0x0001239c ldr r3, [r6]                              |     r3 = *(r6);
    0x0001239e mov r0, r6                                |     r0 = r6;
    0x000123a0 ldr r3, [r3, 0xc]                         |     r3 = *((r3 + 0xc));
    0x000123a2 blx r3                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000123a4 b 0x1230e                                 |     goto label_0;
                                                         | label_9:
    0x000123a6 adds r2, r6, 4                            |     r2 = r6 + 4;
    0x000123a8 dmb ish                                   |     __asm ("dmb ish");
                                                         |     do {
    0x000123ac ldrex r3, [r2]                            |         __asm ("ldrex r3, [r2]");
    0x000123b0 subs r1, r3, 1                            |         r1 = r3 - 1;
    0x000123b2 strex ip, r1, [r2]                        |         __asm ("strex ip, r1, [r2]");
    0x000123b6 cmp.w ip, 0                               |         
    0x000123ba bne 0x123ac                               |         
                                                         |     } while (ip != 0);
    0x000123bc dmb ish                                   |     __asm ("dmb ish");
    0x000123c0 b 0x1230a                                 |     goto label_1;
                                                         | label_8:
    0x000123c2 adds r3, 4                                |     r3 += 4;
    0x000123c4 dmb ish                                   |     __asm ("dmb ish");
                                                         |     do {
    0x000123c8 ldrex r0, [r3]                            |         __asm ("ldrex r0, [r3]");
    0x000123cc adds r0, 1                                |         r0++;
    0x000123ce strex r1, r0, [r3]                        |         __asm ("strex r1, r0, [r3]");
    0x000123d2 cmp r1, 0                                 |         
    0x000123d4 bne 0x123c8                               |         
                                                         |     } while (r1 != 0);
    0x000123d6 dmb ish                                   |     __asm ("dmb ish");
    0x000123da b 0x122e8                                 |     goto label_2;
                                                         | label_6:
    0x000123dc adds r3, 4                                |     r3 += 4;
    0x000123de dmb ish                                   |     __asm ("dmb ish");
                                                         |     do {
    0x000123e2 ldrex r1, [r3]                            |         __asm ("ldrex r1, [r3]");
    0x000123e6 adds r1, 1                                |         r1++;
    0x000123e8 strex r2, r1, [r3]                        |         __asm ("strex r2, r1, [r3]");
    0x000123ec cmp r2, 0                                 |         
    0x000123ee bne 0x123e2                               |         
                                                         |     } while (r2 != 0);
    0x000123f0 dmb ish                                   |     __asm ("dmb ish");
    0x000123f4 ldr r0, [r5]                              |     r0 = *(r5);
    0x000123f6 b 0x122be                                 |     goto label_3;
                                                         | label_12:
    0x000123f8 add.w r2, r6, 8                           |     r2 = r6 + 8;
    0x000123fc dmb ish                                   |     __asm ("dmb ish");
                                                         |     do {
    0x00012400 ldrex r3, [r2]                            |         __asm ("ldrex r3, [r2]");
    0x00012404 subs r1, r3, 1                            |         r1 = r3 - 1;
    0x00012406 strex r0, r1, [r2]                        |         __asm ("strex r0, r1, [r2]");
    0x0001240a cmp r0, 0                                 |         
    0x0001240c bne 0x12400                               |         
                                                         |     } while (r0 != 0);
    0x0001240e dmb ish                                   |     __asm ("dmb ish");
    0x00012412 b 0x12398                                 |     goto label_4;
                                                         | label_11:
    0x00012414 blx 0xea48                                |     fcn_0000ea48 ();
    0x00012418 b 0x124bc                                 |     goto label_13;
                                                         |     do {
                                                         | label_5:
    0x00012422 ldr r0, [r5, 4]                           |         r0 = *((r5 + 4));
                                                         |         if (r0 != 0) {
    0x00012424 cbz r0, 0x1242a                           |             
    0x00012426 bl 0x18a84                                |             r0 = fcn_00018a84 (r0);
                                                         |         }
    0x0001242a blx 0xea54                                |         fcn_0000ea54 ();
    0x0001242e b 0x12422                                 |         
                                                         |     } while (1);
                                                         | label_7:
    0x00012432 movs r0, 0x28                             |     r0 = 0x28;
    0x00012434 add.w r8, sp, 0xc                         |     r8 += var_ch;
    0x00012438 blx 0xe764                                |     fcn_0000e764 ();
    0x0001243c ldr r1, [pc, 0xbc]                        |     
    0x0001243e mov r4, r0                                |     r4 = r0;
    0x00012440 add r2, sp, 4                             |     r2 += var_4h;
    0x00012442 mov r0, r8                                |     r0 = r8;
    0x00012444 add r1, pc                                |     r1 = 0x24944;
    0x00012446 blx 0xeb58                                |     fcn_0000eb58 ();
    0x0001244a add r6, sp, 0x24                          |     r6 += var_24h;
    0x0001244c mov r3, r8                                |     r3 = r8;
    0x0001244e movs r2, 0                                |     r2 = 0;
    0x00012450 mov.w r1, -1                              |     r1 = -1;
    0x00012454 mov r0, r6                                |     r0 = r6;
    0x00012456 bl 0x174fc                                |     fcn_000174fc (r0, r1, r2, r3, r4);
    0x0001245a mov r1, r6                                |     r1 = r6;
    0x0001245c mov r0, r4                                |     r0 = r4;
    0x0001245e blx 0xeb0c                                |     fcn_0000eb0c ();
    0x00012462 ldr r0, [sp, 0x24]                        |     r0 = var_24h;
    0x00012464 add r3, sp, 0x2c                          |     r3 += var_2ch;
    0x00012466 cmp r0, r3                                |     
    0x00012468 bne 0x124c4                               |     
                                                         |     while (1) {
    0x0001246a ldr r3, [pc, 0x94]                        |         r3 = *(0x12502);
    0x0001246c mov.w r2, -1                              |         r2 = -1;
    0x00012470 ldr r1, [sp, 0xc]                         |         r1 = var_ch;
    0x00012472 add.w r0, r4, 0x10                        |         r0 = r4 + 0x10;
    0x00012476 ldr r3, [r7, r3]                          |         r3 = *((r7 + r3));
    0x00012478 str r2, [r4, 8]                           |         *((r4 + 8)) = r2;
    0x0001247a ldr r2, [sp, 0x10]                        |         r2 = var_10h;
    0x0001247c adds r3, 8                                |         r3 += 8;
    0x0001247e str r3, [r4]                              |         *(r4) = r3;
    0x00012480 movs r3, 0                                |         r3 = 0;
    0x00012482 str r3, [r4, 0xc]                         |         *((r4 + 0xc)) = r3;
    0x00012484 add.w r3, r4, 0x18                        |         r3 = r4 + 0x18;
    0x00012488 add r2, r1                                |         r2 += r1;
    0x0001248a str r3, [r4, 0x10]                        |         *((r4 + 0x10)) = r3;
    0x0001248c bl 0xf5b8                                 |         fcn_0000f5b8 (r0, r1, r2);
    0x00012490 ldr r0, [sp, 0xc]                         |         r0 = var_ch;
    0x00012492 add r3, sp, 0x14                          |         r3 += var_14h;
    0x00012494 cmp r0, r3                                |         
                                                         |         if (r0 != r3) {
    0x00012496 beq 0x1249c                               |             
    0x00012498 blx 0xe9a4                                |             fcn_0000e9a4 ();
                                                         |         }
    0x0001249c ldr r2, [pc, 0x50]                        |         r2 = *(0x124f0);
    0x0001249e mov r0, r4                                |         r0 = r4;
    0x000124a0 ldr r3, [pc, 0x50]                        |         r3 = *(0x124f4);
    0x000124a2 ldr r2, [r7, r2]                          |         r2 = *((r7 + r2));
    0x000124a4 ldr r1, [r7, r3]                          |         r1 = *((r7 + r3));
    0x000124a6 blx 0xed0c                                |         fcn_0000ed0c ();
    0x000124aa mov r0, r4                                |         r0 = r4;
    0x000124ac blx 0xea3c                                |         fcn_0000ea3c ();
    0x000124b0 ldr r0, [sp, 0xc]                         |         r0 = var_ch;
    0x000124b2 add r3, sp, 0x14                          |         r3 += var_14h;
    0x000124b4 cmp r0, r3                                |         
                                                         |         if (r0 != r3) {
    0x000124b6 beq 0x124bc                               |             
    0x000124b8 blx 0xe9a4                                |             fcn_0000e9a4 ();
                                                         |         }
                                                         | label_13:
    0x000124bc mov r0, r4                                |         r0 = r4;
    0x000124be blx 0xe878                                |         fcn_0000e878 ();
    0x000124c2 b 0x12422                                 |         goto label_5;
    0x000124c4 blx 0xe9a4                                |         fcn_0000e9a4 ();
    0x000124c8 b 0x1246a                                 |         
                                                         |     }
                                                         | }
    ; assembly                                                                                                                                                                                                                                                       | /* r2dec pseudo code output */
                                                                                                                                                                                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x14028 */
                                                                                                                                                                                                                                                                     | #include <stdint.h>
                                                                                                                                                                                                                                                                     |  
    ; (fcn) method.mqtt::async_client.subscribe_std::shared_ptr_mqtt::string_collection_const___std::vector_int__std::allocator_int____const__std::vector_mqtt::subscribe_options__std::allocator_mqtt::subscribe_options____const__mqtt::properties_const_ ()       | void method_mqtt::async_client_subscribe_std::shared_ptr_mqtt::string_collection_const_std::vector_int_std::allocator_int_const_std::vector_mqtt::subscribe_options_std::allocator_mqtt::subscribe_options_const_mqtt::properties_const_ (int16_t arg_138h, int16_t arg_13ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                                                                                                                     |     int16_t var_0h;
                                                                                                                                                                                                                                                                     |     int16_t var_8h;
                                                                                                                                                                                                                                                                     |     int16_t var_ch;
                                                                                                                                                                                                                                                                     |     int16_t var_10h;
                                                                                                                                                                                                                                                                     |     int16_t var_14h;
                                                                                                                                                                                                                                                                     |     int16_t var_18h;
                                                                                                                                                                                                                                                                     |     int16_t var_1ch;
                                                                                                                                                                                                                                                                     |     int16_t var_20h;
                                                                                                                                                                                                                                                                     |     int16_t var_34h;
                                                                                                                                                                                                                                                                     |     int16_t var_38h;
                                                                                                                                                                                                                                                                     |     int16_t var_3ch;
                                                                                                                                                                                                                                                                     |     int16_t var_84h;
                                                                                                                                                                                                                                                                     |     int16_t var_88h;
                                                                                                                                                                                                                                                                     |     int16_t var_98h;
                                                                                                                                                                                                                                                                     |     int16_t var_a4h;
                                                                                                                                                                                                                                                                     |     int16_t var_c4h;
                                                                                                                                                                                                                                                                     |     int16_t var_ech;
                                                                                                                                                                                                                                                                     |     int16_t var_f0h;
                                                                                                                                                                                                                                                                     |     int16_t var_100h;
                                                                                                                                                                                                                                                                     |     int16_t var_10ch;
                                                                                                                                                                                                                                                                     |     r0 = arg1;
                                                                                                                                                                                                                                                                     |     r1 = arg2;
                                                                                                                                                                                                                                                                     |     r2 = arg3;
                                                                                                                                                                                                                                                                     |     r3 = arg4;
                                                                                                                                                                                                                                                                     |     /* mqtt::async_client::subscribe(std::shared_ptr<qtt::string_collection const>, std::vector<int, std::allocator<int> > const&, std::vector<qtt::subscribe_options, std::allocator<qtt::subscribe_options> > const&, mqtt::properties const&) */
    0x00014028 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                                                                                                                                                           |     
    0x0001402c sub sp, 0x114                                                                                                                                                                                                                                         |     
    0x0001402e str r2, [sp, 8]                                                                                                                                                                                                                                       |     var_8h = r2;
    0x00014030 mov r4, r2                                                                                                                                                                                                                                            |     r4 = r2;
    0x00014032 mov sb, r3                                                                                                                                                                                                                                            |     sb = r3;
    0x00014034 mov r6, r0                                                                                                                                                                                                                                            |     r6 = r0;
    0x00014036 ldr.w r2, [pc, 0x4a4]                                                                                                                                                                                                                                 |     
    0x0001403a mov r5, r1                                                                                                                                                                                                                                            |     r5 = r1;
    0x0001403c ldr.w r3, [pc, 0x4a0]                                                                                                                                                                                                                                 |     r3 = *(0x144e0);
    0x00014040 movw r1, 0xaaab                                                                                                                                                                                                                                       |     
    0x00014044 ldr.w sl, [r4]                                                                                                                                                                                                                                        |     sl = *(r4);
                                                                                                                                                                                                                                                                     |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00014048 movt r1, 0xaaaa                                                                                                                                                                                                                                       |     r1 = 0xaaaaaaab;
    0x0001404c add r2, pc                                                                                                                                                                                                                                            |     r2 = 0x2852e;
    0x0001404e ldr.w fp, [pc, 0x494]                                                                                                                                                                                                                                 |     
    0x00014052 ldr r3, [r2, r3]                                                                                                                                                                                                                                      |     
    0x00014054 add fp, pc                                                                                                                                                                                                                                            |     fp = 0x2853e;
    0x00014056 ldr r3, [r3]                                                                                                                                                                                                                                          |     r3 = *(0x2852e);
    0x00014058 str r3, [sp, 0x10c]                                                                                                                                                                                                                                   |     var_10ch = r3;
    0x0001405a mov.w r3, 0                                                                                                                                                                                                                                           |     r3 = 0;
    0x0001405e ldr r3, [sp, 0x138]                                                                                                                                                                                                                                   |     r3 = *(arg_138h);
    0x00014060 str r3, [sp, 0x14]                                                                                                                                                                                                                                    |     var_14h = r3;
    0x00014062 ldrd r2, r3, [sb]                                                                                                                                                                                                                                     |     __asm ("ldrd r2, r3, [sb]");
    0x00014066 subs r2, r3, r2                                                                                                                                                                                                                                       |     r2 = r3 - r2;
    0x00014068 ldrd r0, r3, [sl]                                                                                                                                                                                                                                     |     __asm ("ldrd r0, r3, [sl]");
    0x0001406c subs r3, r3, r0                                                                                                                                                                                                                                       |     r3 -= r0;
    0x0001406e asrs r3, r3, 3                                                                                                                                                                                                                                        |     r3 >>= 3;
    0x00014070 mul r3, r1, r3                                                                                                                                                                                                                                        |     r3 = r1 * r3;
    0x00014074 ldr r1, [sp, 0x13c]                                                                                                                                                                                                                                   |     r1 = *(arg_13ch);
    0x00014076 str r1, [sp, 0x18]                                                                                                                                                                                                                                    |     var_18h = r1;
    0x00014078 cmp.w r3, r2, asr 2                                                                                                                                                                                                                                   |     
    0x0001407c str r3, [sp, 0xc]                                                                                                                                                                                                                                     |     var_ch = r3;
                                                                                                                                                                                                                                                                     |     if (r3 != r2) {
    0x0001407e bne.w 0x1446c                                                                                                                                                                                                                                         |         goto label_16;
                                                                                                                                                                                                                                                                     |     }
    0x00014082 ldr r3, [r5]                                                                                                                                                                                                                                          |     r3 = *(r5);
    0x00014084 ldr r3, [r3, -0x94]                                                                                                                                                                                                                                   |     r3 = *((r3 - 0x94));
    0x00014088 adds r3, r5, r3                                                                                                                                                                                                                                       |     r3 = r5 + r3;
    0x0001408a str r3, [sp, 0x10]                                                                                                                                                                                                                                    |     var_10h = r3;
    0x0001408c ldr r3, [sp, 8]                                                                                                                                                                                                                                       |     r3 = var_8h;
    0x0001408e ldr r7, [r3, 4]                                                                                                                                                                                                                                       |     r7 = *((r3 + 4));
                                                                                                                                                                                                                                                                     |     if (r7 != 0) {
    0x00014090 cbz r7, 0x140aa                                                                                                                                                                                                                                       |         
    0x00014092 ldr.w r3, [pc, 0x454]                                                                                                                                                                                                                                 |         r3 = *(0x144ea);
    0x00014096 ldr.w r8, [fp, r3]                                                                                                                                                                                                                                    |         r8 = *((fp + r3));
    0x0001409a ldrb.w r3, [r8]                                                                                                                                                                                                                                       |         r3 = *(r8);
    0x0001409e cmp r3, 0                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |         if (r3 == 0) {
    0x000140a0 beq.w 0x14270                                                                                                                                                                                                                                         |             goto label_17;
                                                                                                                                                                                                                                                                     |         }
    0x000140a4 ldr r3, [r7, 4]                                                                                                                                                                                                                                       |         r3 = *((r7 + 4));
    0x000140a6 adds r3, 1                                                                                                                                                                                                                                            |         r3++;
    0x000140a8 str r3, [r7, 4]                                                                                                                                                                                                                                       |         *((r7 + 4)) = r3;
                                                                                                                                                                                                                                                                     |     }
                                                                                                                                                                                                                                                                     | label_0:
    0x000140aa movs r3, 0                                                                                                                                                                                                                                            |     r3 = 0;
    0x000140ac movs r0, 0xb0                                                                                                                                                                                                                                         |     r0 = 0xb0;
    0x000140ae str r3, [r6]                                                                                                                                                                                                                                          |     *(r6) = r3;
    0x000140b0 blx 0xe5ec                                                                                                                                                                                                                                            |     fcn_0000e5ec ();
    0x000140b4 ldr.w r3, [pc, 0x434]                                                                                                                                                                                                                                 |     r3 = *(0x144ec);
    0x000140b8 movs r2, 1                                                                                                                                                                                                                                            |     r2 = 1;
    0x000140ba strd r2, r2, [r0, 4]                                                                                                                                                                                                                                  |     __asm ("strd r2, r2, [r0, 4]");
    0x000140be mov r4, r0                                                                                                                                                                                                                                            |     r4 = r0;
    0x000140c0 ldr.w r3, [fp, r3]                                                                                                                                                                                                                                    |     r3 = *((fp + r3));
    0x000140c4 strd sl, r7, [sp, 0x34]                                                                                                                                                                                                                               |     __asm ("strd sl, r7, [var_34h]");
    0x000140c8 mov sl, r0                                                                                                                                                                                                                                            |     sl = r0;
    0x000140ca adds r3, 8                                                                                                                                                                                                                                            |     r3 += 8;
    0x000140cc str r3, [sl], 0x10                                                                                                                                                                                                                                    |     *(sl) = r3;
                                                                                                                                                                                                                                                                     |     sl += 0x10;
                                                                                                                                                                                                                                                                     |     if (r7 != 0) {
    0x000140d0 cbz r7, 0x140ea                                                                                                                                                                                                                                       |         
    0x000140d2 ldr.w r3, [pc, 0x414]                                                                                                                                                                                                                                 |         r3 = *(0x144ea);
    0x000140d6 ldr.w r8, [fp, r3]                                                                                                                                                                                                                                    |         r8 = *((fp + r3));
    0x000140da ldrb.w r3, [r8]                                                                                                                                                                                                                                       |         r3 = *(r8);
    0x000140de cmp r3, 0                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |         if (r3 == 0) {
    0x000140e0 beq.w 0x142b2                                                                                                                                                                                                                                         |             goto label_18;
                                                                                                                                                                                                                                                                     |         }
    0x000140e4 ldr r3, [r7, 4]                                                                                                                                                                                                                                       |         r3 = *((r7 + 4));
    0x000140e6 add r3, r2                                                                                                                                                                                                                                            |         r3 += r2;
    0x000140e8 str r3, [r7, 4]                                                                                                                                                                                                                                       |         *((r7 + 4)) = r3;
                                                                                                                                                                                                                                                                     |     }
                                                                                                                                                                                                                                                                     | label_2:
    0x000140ea ldr r2, [sp, 0x10]                                                                                                                                                                                                                                    |     r2 = var_10h;
    0x000140ec add r3, sp, 0x34                                                                                                                                                                                                                                      |     r3 += var_34h;
    0x000140ee movs r1, 1                                                                                                                                                                                                                                            |     r1 = 1;
    0x000140f0 mov r0, sl                                                                                                                                                                                                                                            |     r0 = sl;
    0x000140f2 str r3, [sp, 0x10]                                                                                                                                                                                                                                    |     var_10h = r3;
    0x000140f4 blx 0xeca0                                                                                                                                                                                                                                            |     fcn_0000eca0 ();
    0x000140f8 ldr r0, [sp, 0x38]                                                                                                                                                                                                                                    |     r0 = var_38h;
    0x000140fa ldr r3, [pc, 0x3ec]                                                                                                                                                                                                                                   |     r3 = *(0x144ea);
    0x000140fc ldr.w r8, [fp, r3]                                                                                                                                                                                                                                    |     r8 = *((fp + r3));
                                                                                                                                                                                                                                                                     |     if (r0 != 0) {
    0x00014100 cbz r0, 0x14118                                                                                                                                                                                                                                       |         
    0x00014102 ldrb.w r3, [r8]                                                                                                                                                                                                                                       |         r3 = *(r8);
    0x00014106 cmp r3, 0                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |         if (r3 == 0) {
    0x00014108 beq.w 0x14382                                                                                                                                                                                                                                         |             goto label_19;
                                                                                                                                                                                                                                                                     |         }
    0x0001410c ldr r3, [r0, 4]                                                                                                                                                                                                                                       |         r3 = *((r0 + 4));
    0x0001410e subs r2, r3, 1                                                                                                                                                                                                                                        |         r2 = r3 - 1;
    0x00014110 str r2, [r0, 4]                                                                                                                                                                                                                                       |         *((r0 + 4)) = r2;
                                                                                                                                                                                                                                                                     | label_9:
    0x00014112 cmp r3, 1                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |         if (r3 == 1) {
    0x00014114 beq.w 0x1428a                                                                                                                                                                                                                                         |             goto label_20;
                                                                                                                                                                                                                                                                     |         }
                                                                                                                                                                                                                                                                     |     }
                                                                                                                                                                                                                                                                     | label_1:
    0x00014118 strd sl, r4, [r6]                                                                                                                                                                                                                                     |     __asm ("strd sl, r4, [r6]");
    0x0001411c cmp r7, 0                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r7 == 0) {
    0x0001411e beq.w 0x14250                                                                                                                                                                                                                                         |         goto label_21;
                                                                                                                                                                                                                                                                     |     }
    0x00014122 ldrb.w r3, [r8]                                                                                                                                                                                                                                       |     r3 = *(r8);
    0x00014126 cmp r3, 0                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 == 0) {
    0x00014128 beq.w 0x1434c                                                                                                                                                                                                                                         |         goto label_22;
                                                                                                                                                                                                                                                                     |     }
    0x0001412c ldr r3, [r7, 4]                                                                                                                                                                                                                                       |     r3 = *((r7 + 4));
    0x0001412e subs r2, r3, 1                                                                                                                                                                                                                                        |     r2 = r3 - 1;
    0x00014130 str r2, [r7, 4]                                                                                                                                                                                                                                       |     *((r7 + 4)) = r2;
                                                                                                                                                                                                                                                                     | label_7:
    0x00014132 cmp r3, 1                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 == 1) {
    0x00014134 beq.w 0x142f2                                                                                                                                                                                                                                         |         goto label_23;
                                                                                                                                                                                                                                                                     |     }
                                                                                                                                                                                                                                                                     | label_4:
    0x00014138 ldrd r2, r4, [r6]                                                                                                                                                                                                                                     |     __asm ("ldrd r2, r4, [r6]");
    0x0001413c ldr r3, [sp, 0xc]                                                                                                                                                                                                                                     |     r3 = var_ch;
    0x0001413e str.w r3, [r2, 0x8c]                                                                                                                                                                                                                                  |     __asm ("str.w r3, [r2, 0x8c]");
    0x00014142 ldr r3, [r5]                                                                                                                                                                                                                                          |     r3 = *(r5);
    0x00014144 ldr.w r3, [r3, 0x8c]                                                                                                                                                                                                                                  |     r3 = *((r3 + 0x8c));
    0x00014148 strd r2, r4, [sp, 0x34]                                                                                                                                                                                                                               |     __asm ("strd r2, r4, [var_34h]");
    0x0001414c cmp r4, 0                                                                                                                                                                                                                                             |     
    0x0001414e bne.w 0x14260                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                     |     while (1) {
                                                                                                                                                                                                                                                                     | label_5:
    0x00014152 ldr r1, [sp, 0x10]                                                                                                                                                                                                                                    |         r1 = var_10h;
    0x00014154 mov r0, r5                                                                                                                                                                                                                                            |         r0 = r5;
    0x00014156 blx r3                                                                                                                                                                                                                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00014158 ldr r4, [sp, 0x38]                                                                                                                                                                                                                                    |         r4 = var_38h;
                                                                                                                                                                                                                                                                     |         if (r4 != 0) {
    0x0001415a cbz r4, 0x14172                                                                                                                                                                                                                                       |             
    0x0001415c ldrb.w r3, [r8]                                                                                                                                                                                                                                       |             r3 = *(r8);
    0x00014160 cmp r3, 0                                                                                                                                                                                                                                             |             
                                                                                                                                                                                                                                                                     |             if (r3 == 0) {
    0x00014162 beq.w 0x14332                                                                                                                                                                                                                                         |                 goto label_24;
                                                                                                                                                                                                                                                                     |             }
    0x00014166 ldr r3, [r4, 4]                                                                                                                                                                                                                                       |             r3 = *((r4 + 4));
    0x00014168 subs r2, r3, 1                                                                                                                                                                                                                                        |             r2 = r3 - 1;
    0x0001416a str r2, [r4, 4]                                                                                                                                                                                                                                       |             *((r4 + 4)) = r2;
                                                                                                                                                                                                                                                                     | label_6:
    0x0001416c cmp r3, 1                                                                                                                                                                                                                                             |             
                                                                                                                                                                                                                                                                     |             if (r3 == 1) {
    0x0001416e beq.w 0x142cc                                                                                                                                                                                                                                         |                 goto label_25;
                                                                                                                                                                                                                                                                     |             }
                                                                                                                                                                                                                                                                     |         }
                                                                                                                                                                                                                                                                     | label_3:
    0x00014172 add r7, sp, 0xa4                                                                                                                                                                                                                                      |         r7 += var_a4h;
    0x00014174 ldr r1, [r5, 0x50]                                                                                                                                                                                                                                    |         r1 = *((r5 + 0x50));
    0x00014176 mov r0, r7                                                                                                                                                                                                                                            |         r0 = r7;
    0x00014178 blx 0xece8                                                                                                                                                                                                                                            |         fcn_0000ece8 ();
    0x0001417c mov r1, r6                                                                                                                                                                                                                                            |         r1 = r6;
    0x0001417e mov r0, r7                                                                                                                                                                                                                                            |         r0 = r7;
    0x00014180 blx 0xeeb0                                                                                                                                                                                                                                            |         fcn_0000eeb0 ();
    0x00014184 ldr r1, [sp, 0x14]                                                                                                                                                                                                                                    |         r1 = var_14h;
    0x00014186 mov r0, r7                                                                                                                                                                                                                                            |         r0 = r7;
    0x00014188 blx 0xeb94                                                                                                                                                                                                                                            |         MQTTAsync_sendMessage ();
    0x0001418c add r4, sp, 0xf0                                                                                                                                                                                                                                      |         r4 += var_f0h;
    0x0001418e mov r0, r4                                                                                                                                                                                                                                            |         r0 = r4;
    0x00014190 blx 0xedb4                                                                                                                                                                                                                                            |         fcn_0000edb4 ();
    0x00014194 add r3, sp, 0x20                                                                                                                                                                                                                                      |         r3 += var_20h;
    0x00014196 ldr r1, [sp, 0x18]                                                                                                                                                                                                                                    |         r1 = var_18h;
    0x00014198 mov r0, r3                                                                                                                                                                                                                                            |         r0 = r3;
    0x0001419a str r3, [sp, 0x14]                                                                                                                                                                                                                                    |         var_14h = r3;
    0x0001419c blx 0xeb24                                                                                                                                                                                                                                            |         fcn_0000eb24 ();
    0x000141a0 ldr r3, [sp, 0x14]                                                                                                                                                                                                                                    |         r3 = var_14h;
    0x000141a2 add.w sl, sp, 0x3c                                                                                                                                                                                                                                    |         sl += var_3ch;
    0x000141a6 add.w ip, sp, 0xc4                                                                                                                                                                                                                                    |         
    0x000141aa ldm r3, {r0, r1, r2, r3}                                                                                                                                                                                                                              |         r0 = *(r3);
                                                                                                                                                                                                                                                                     |         r1 = *((r3 + 4));
                                                                                                                                                                                                                                                                     |         r2 = *((r3 + 8));
                                                                                                                                                                                                                                                                     |         r3 = *((r3 + 12));
    0x000141ac stm.w r4, {r0, r1, r2, r3}                                                                                                                                                                                                                            |         *(r4) = r0;
                                                                                                                                                                                                                                                                     |         *((r4 + 4)) = r1;
                                                                                                                                                                                                                                                                     |         *((r4 + 8)) = r2;
                                                                                                                                                                                                                                                                     |         *((r4 + 12)) = r3;
    0x000141b0 stm.w ip, {r0, r1, r2, r3}                                                                                                                                                                                                                            |         *(ip) = r0;
                                                                                                                                                                                                                                                                     |         *((ip + 4)) = r1;
                                                                                                                                                                                                                                                                     |         *((ip + 8)) = r2;
                                                                                                                                                                                                                                                                     |         *((ip + 12)) = r3;
    0x000141b4 mov r1, r7                                                                                                                                                                                                                                            |         r1 = r7;
    0x000141b6 mov r0, sl                                                                                                                                                                                                                                            |         r0 = sl;
    0x000141b8 blx 0xed60                                                                                                                                                                                                                                            |         fcn_0000ed60 ();
    0x000141bc ldr r0, [sp, 0x100]                                                                                                                                                                                                                                   |         r0 = var_100h;
                                                                                                                                                                                                                                                                     |         if (r0 != 0) {
    0x000141be cbz r0, 0x141c4                                                                                                                                                                                                                                       |             
    0x000141c0 blx 0xe9a4                                                                                                                                                                                                                                            |             fcn_0000e9a4 ();
                                                                                                                                                                                                                                                                     |         }
    0x000141c4 mov r0, r4                                                                                                                                                                                                                                            |         r0 = r4;
    0x000141c6 blx 0xedb4                                                                                                                                                                                                                                            |         fcn_0000edb4 ();
    0x000141ca ldr r0, [sp, 0xec]                                                                                                                                                                                                                                    |         r0 = var_ech;
                                                                                                                                                                                                                                                                     |         if (r0 != 0) {
    0x000141cc cbz r0, 0x141e8                                                                                                                                                                                                                                       |             
    0x000141ce ldrb.w r3, [r8]                                                                                                                                                                                                                                       |             r3 = *(r8);
    0x000141d2 cmp r3, 0                                                                                                                                                                                                                                             |             
                                                                                                                                                                                                                                                                     |             if (r3 == 0) {
    0x000141d4 beq.w 0x14366                                                                                                                                                                                                                                         |                 goto label_26;
                                                                                                                                                                                                                                                                     |             }
    0x000141d8 ldr r3, [r0, 8]                                                                                                                                                                                                                                       |             r3 = *((r0 + 8));
    0x000141da subs r2, r3, 1                                                                                                                                                                                                                                        |             r2 = r3 - 1;
    0x000141dc str r2, [r0, 8]                                                                                                                                                                                                                                       |             *((r0 + 8)) = r2;
                                                                                                                                                                                                                                                                     | label_8:
    0x000141de cmp r3, 1                                                                                                                                                                                                                                             |             
                                                                                                                                                                                                                                                                     |             if (r3 != 1) {
    0x000141e0 bne 0x141e8                                                                                                                                                                                                                                           |                 goto label_27;
                                                                                                                                                                                                                                                                     |             }
    0x000141e2 ldr r3, [r0]                                                                                                                                                                                                                                          |             r3 = *(r0);
    0x000141e4 ldr r3, [r3, 0xc]                                                                                                                                                                                                                                     |             r3 = *((r3 + 0xc));
    0x000141e6 blx r3                                                                                                                                                                                                                                                |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                                                                                                                     |         }
                                                                                                                                                                                                                                                                     | label_27:
    0x000141e8 ldr r3, [sp, 8]                                                                                                                                                                                                                                       |         r3 = var_8h;
    0x000141ea ldr r1, [sp, 0xc]                                                                                                                                                                                                                                     |         r1 = var_ch;
    0x000141ec ldr r2, [r3]                                                                                                                                                                                                                                          |         r2 = *(r3);
    0x000141ee ldr.w r3, [sb]                                                                                                                                                                                                                                        |         r3 = *(sb);
    0x000141f2 ldr r2, [r2, 0xc]                                                                                                                                                                                                                                     |         r2 = *((r2 + 0xc));
    0x000141f4 str.w sl, [sp]                                                                                                                                                                                                                                        |         __asm ("str.w sl, [sp]");
    0x000141f8 ldr r0, [r5, 0x1c]                                                                                                                                                                                                                                    |         r0 = *((r5 + 0x1c));
    0x000141fa blx 0xebac                                                                                                                                                                                                                                            |         r0 = fcn_0000ebac ();
    0x000141fe mov r4, r0                                                                                                                                                                                                                                            |         r4 = r0;
    0x00014200 cmp r0, 0                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |         if (r0 != 0) {
    0x00014202 bne.w 0x14414                                                                                                                                                                                                                                         |             goto label_28;
                                                                                                                                                                                                                                                                     |         }
    0x00014206 ldr r0, [sp, 0x98]                                                                                                                                                                                                                                    |         r0 = var_98h;
                                                                                                                                                                                                                                                                     |         if (r0 != 0) {
    0x00014208 cbz r0, 0x1420e                                                                                                                                                                                                                                       |             
    0x0001420a blx 0xe9a4                                                                                                                                                                                                                                            |             fcn_0000e9a4 ();
                                                                                                                                                                                                                                                                     |         }
    0x0001420e add r0, sp, 0x88                                                                                                                                                                                                                                      |         r0 += var_88h;
    0x00014210 blx 0xedb4                                                                                                                                                                                                                                            |         fcn_0000edb4 ();
    0x00014214 ldr r0, [sp, 0x84]                                                                                                                                                                                                                                    |         r0 = var_84h;
                                                                                                                                                                                                                                                                     |         if (r0 != 0) {
    0x00014216 cbz r0, 0x14232                                                                                                                                                                                                                                       |             
    0x00014218 ldrb.w r3, [r8]                                                                                                                                                                                                                                       |             r3 = *(r8);
    0x0001421c cmp r3, 0                                                                                                                                                                                                                                             |             
                                                                                                                                                                                                                                                                     |             if (r3 == 0) {
    0x0001421e beq.w 0x1439e                                                                                                                                                                                                                                         |                 goto label_29;
                                                                                                                                                                                                                                                                     |             }
    0x00014222 ldr r3, [r0, 8]                                                                                                                                                                                                                                       |             r3 = *((r0 + 8));
    0x00014224 subs r2, r3, 1                                                                                                                                                                                                                                        |             r2 = r3 - 1;
    0x00014226 str r2, [r0, 8]                                                                                                                                                                                                                                       |             *((r0 + 8)) = r2;
                                                                                                                                                                                                                                                                     | label_10:
    0x00014228 cmp r3, 1                                                                                                                                                                                                                                             |             
                                                                                                                                                                                                                                                                     |             if (r3 != 1) {
    0x0001422a bne 0x14232                                                                                                                                                                                                                                           |                 goto label_30;
                                                                                                                                                                                                                                                                     |             }
    0x0001422c ldr r3, [r0]                                                                                                                                                                                                                                          |             r3 = *(r0);
    0x0001422e ldr r3, [r3, 0xc]                                                                                                                                                                                                                                     |             r3 = *((r3 + 0xc));
    0x00014230 blx r3                                                                                                                                                                                                                                                |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                                                                                                                     |         }
                                                                                                                                                                                                                                                                     | label_30:
    0x00014232 ldr r2, [pc, 0x2bc]                                                                                                                                                                                                                                   |         
    0x00014234 ldr r3, [pc, 0x2a8]                                                                                                                                                                                                                                   |         r3 = *(0x144e0);
    0x00014236 add r2, pc                                                                                                                                                                                                                                            |         r2 = ">\r>$>";
    0x00014238 ldr r3, [r2, r3]                                                                                                                                                                                                                                      |         r3 = ">\r>$>";
    0x0001423a ldr r2, [r3]                                                                                                                                                                                                                                          |         r2 = ">\r>$>";
    0x0001423c ldr r3, [sp, 0x10c]                                                                                                                                                                                                                                   |         r3 = var_10ch;
    0x0001423e eors r2, r3                                                                                                                                                                                                                                           |         r2 ^= r3;
    0x00014240 mov.w r3, 0                                                                                                                                                                                                                                           |         r3 = 0;
                                                                                                                                                                                                                                                                     |         if (r2 != r3) {
    0x00014244 bne.w 0x14410                                                                                                                                                                                                                                         |             goto label_31;
                                                                                                                                                                                                                                                                     |         }
    0x00014248 mov r0, r6                                                                                                                                                                                                                                            |         r0 = r6;
    0x0001424a add sp, 0x114                                                                                                                                                                                                                                         |         
    0x0001424c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                                                                                                                            |         
                                                                                                                                                                                                                                                                     | label_21:
    0x00014250 ldr r3, [sp, 0xc]                                                                                                                                                                                                                                     |         r3 = var_ch;
    0x00014252 str.w r3, [r4, 0x9c]                                                                                                                                                                                                                                  |         __asm ("str.w r3, [r4, 0x9c]");
    0x00014256 ldr r3, [r5]                                                                                                                                                                                                                                          |         r3 = *(r5);
    0x00014258 ldr.w r3, [r3, 0x8c]                                                                                                                                                                                                                                  |         r3 = *((r3 + 0x8c));
    0x0001425c strd sl, r4, [sp, 0x34]                                                                                                                                                                                                                               |         __asm ("strd sl, r4, [var_34h]");
    0x00014260 ldrb.w r2, [r8]                                                                                                                                                                                                                                       |         r2 = *(r8);
    0x00014264 cmp r2, 0                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |         if (r2 == 0) {
    0x00014266 beq 0x14318                                                                                                                                                                                                                                           |             goto label_32;
                                                                                                                                                                                                                                                                     |         }
    0x00014268 ldr r2, [r4, 4]                                                                                                                                                                                                                                       |         r2 = *((r4 + 4));
    0x0001426a adds r2, 1                                                                                                                                                                                                                                            |         r2++;
    0x0001426c str r2, [r4, 4]                                                                                                                                                                                                                                       |         *((r4 + 4)) = r2;
    0x0001426e b 0x14152                                                                                                                                                                                                                                             |         
                                                                                                                                                                                                                                                                     |     }
                                                                                                                                                                                                                                                                     | label_17:
    0x00014270 adds r3, r7, 4                                                                                                                                                                                                                                        |     r3 = r7 + 4;
    0x00014272 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x00014276 ldrex r1, [r3]                                                                                                                                                                                                                                        |         __asm ("ldrex r1, [r3]");
    0x0001427a adds r1, 1                                                                                                                                                                                                                                            |         r1++;
    0x0001427c strex r2, r1, [r3]                                                                                                                                                                                                                                    |         __asm ("strex r2, r1, [r3]");
    0x00014280 cmp r2, 0                                                                                                                                                                                                                                             |         
    0x00014282 bne 0x14276                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r2 != 0);
    0x00014284 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x00014288 b 0x140aa                                                                                                                                                                                                                                             |     goto label_0;
                                                                                                                                                                                                                                                                     | label_20:
    0x0001428a ldr r3, [r0]                                                                                                                                                                                                                                          |     r3 = *(r0);
    0x0001428c str r0, [sp, 0x1c]                                                                                                                                                                                                                                    |     var_1ch = r0;
    0x0001428e ldr r3, [r3, 8]                                                                                                                                                                                                                                       |     r3 = *((r3 + 8));
    0x00014290 blx r3                                                                                                                                                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014292 ldrb.w r3, [r8]                                                                                                                                                                                                                                       |     r3 = *(r8);
    0x00014296 ldr r0, [sp, 0x1c]                                                                                                                                                                                                                                    |     r0 = var_1ch;
    0x00014298 cmp r3, 0                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 == 0) {
    0x0001429a beq.w 0x143f2                                                                                                                                                                                                                                         |         goto label_33;
                                                                                                                                                                                                                                                                     |     }
    0x0001429e ldr r3, [r0, 8]                                                                                                                                                                                                                                       |     r3 = *((r0 + 8));
    0x000142a0 subs r2, r3, 1                                                                                                                                                                                                                                        |     r2 = r3 - 1;
    0x000142a2 str r2, [r0, 8]                                                                                                                                                                                                                                       |     *((r0 + 8)) = r2;
                                                                                                                                                                                                                                                                     | label_13:
    0x000142a4 cmp r3, 1                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 != 1) {
    0x000142a6 bne.w 0x14118                                                                                                                                                                                                                                         |         goto label_1;
                                                                                                                                                                                                                                                                     |     }
    0x000142aa ldr r3, [r0]                                                                                                                                                                                                                                          |     r3 = *(r0);
    0x000142ac ldr r3, [r3, 0xc]                                                                                                                                                                                                                                     |     r3 = *((r3 + 0xc));
    0x000142ae blx r3                                                                                                                                                                                                                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x000142b0 b 0x14118                                                                                                                                                                                                                                             |     goto label_1;
                                                                                                                                                                                                                                                                     | label_18:
    0x000142b2 adds r3, r7, 4                                                                                                                                                                                                                                        |     r3 = r7 + 4;
    0x000142b4 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x000142b8 ldrex r1, [r3]                                                                                                                                                                                                                                        |         __asm ("ldrex r1, [r3]");
    0x000142bc adds r1, 1                                                                                                                                                                                                                                            |         r1++;
    0x000142be strex r2, r1, [r3]                                                                                                                                                                                                                                    |         __asm ("strex r2, r1, [r3]");
    0x000142c2 cmp r2, 0                                                                                                                                                                                                                                             |         
    0x000142c4 bne 0x142b8                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r2 != 0);
    0x000142c6 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x000142ca b 0x140ea                                                                                                                                                                                                                                             |     goto label_2;
                                                                                                                                                                                                                                                                     | label_25:
    0x000142cc ldr r3, [r4]                                                                                                                                                                                                                                          |     r3 = *(r4);
    0x000142ce mov r0, r4                                                                                                                                                                                                                                            |     r0 = r4;
    0x000142d0 ldr r3, [r3, 8]                                                                                                                                                                                                                                       |     r3 = *((r3 + 8));
    0x000142d2 blx r3                                                                                                                                                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000142d4 ldrb.w r3, [r8]                                                                                                                                                                                                                                       |     r3 = *(r8);
    0x000142d8 cmp r3, 0                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 == 0) {
    0x000142da beq 0x143ba                                                                                                                                                                                                                                           |         goto label_34;
                                                                                                                                                                                                                                                                     |     }
    0x000142dc ldr r3, [r4, 8]                                                                                                                                                                                                                                       |     r3 = *((r4 + 8));
    0x000142de subs r2, r3, 1                                                                                                                                                                                                                                        |     r2 = r3 - 1;
    0x000142e0 str r2, [r4, 8]                                                                                                                                                                                                                                       |     *((r4 + 8)) = r2;
                                                                                                                                                                                                                                                                     | label_11:
    0x000142e2 cmp r3, 1                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 != 1) {
    0x000142e4 bne.w 0x14172                                                                                                                                                                                                                                         |         goto label_3;
                                                                                                                                                                                                                                                                     |     }
    0x000142e8 ldr r3, [r4]                                                                                                                                                                                                                                          |     r3 = *(r4);
    0x000142ea mov r0, r4                                                                                                                                                                                                                                            |     r0 = r4;
    0x000142ec ldr r3, [r3, 0xc]                                                                                                                                                                                                                                     |     r3 = *((r3 + 0xc));
    0x000142ee blx r3                                                                                                                                                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000142f0 b 0x14172                                                                                                                                                                                                                                             |     goto label_3;
                                                                                                                                                                                                                                                                     | label_23:
    0x000142f2 ldr r3, [r7]                                                                                                                                                                                                                                          |     r3 = *(r7);
    0x000142f4 mov r0, r7                                                                                                                                                                                                                                            |     r0 = r7;
    0x000142f6 ldr r3, [r3, 8]                                                                                                                                                                                                                                       |     r3 = *((r3 + 8));
    0x000142f8 blx r3                                                                                                                                                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000142fa ldrb.w r3, [r8]                                                                                                                                                                                                                                       |     r3 = *(r8);
    0x000142fe cmp r3, 0                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 == 0) {
    0x00014300 beq 0x143d6                                                                                                                                                                                                                                           |         goto label_35;
                                                                                                                                                                                                                                                                     |     }
    0x00014302 ldr r3, [r7, 8]                                                                                                                                                                                                                                       |     r3 = *((r7 + 8));
    0x00014304 subs r2, r3, 1                                                                                                                                                                                                                                        |     r2 = r3 - 1;
    0x00014306 str r2, [r7, 8]                                                                                                                                                                                                                                       |     *((r7 + 8)) = r2;
                                                                                                                                                                                                                                                                     | label_12:
    0x00014308 cmp r3, 1                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                     |     if (r3 != 1) {
    0x0001430a bne.w 0x14138                                                                                                                                                                                                                                         |         goto label_4;
                                                                                                                                                                                                                                                                     |     }
    0x0001430e ldr r3, [r7]                                                                                                                                                                                                                                          |     r3 = *(r7);
    0x00014310 mov r0, r7                                                                                                                                                                                                                                            |     r0 = r7;
    0x00014312 ldr r3, [r3, 0xc]                                                                                                                                                                                                                                     |     r3 = *((r3 + 0xc));
    0x00014314 blx r3                                                                                                                                                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014316 b 0x14138                                                                                                                                                                                                                                             |     goto label_4;
                                                                                                                                                                                                                                                                     | label_32:
    0x00014318 adds r4, 4                                                                                                                                                                                                                                            |     r4 += 4;
    0x0001431a dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x0001431e ldrex r2, [r4]                                                                                                                                                                                                                                        |         __asm ("ldrex r2, [r4]");
    0x00014322 adds r2, 1                                                                                                                                                                                                                                            |         r2++;
    0x00014324 strex r1, r2, [r4]                                                                                                                                                                                                                                    |         __asm ("strex r1, r2, [r4]");
    0x00014328 cmp r1, 0                                                                                                                                                                                                                                             |         
    0x0001432a bne 0x1431e                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r1 != 0);
    0x0001432c dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x00014330 b 0x14152                                                                                                                                                                                                                                             |     goto label_5;
                                                                                                                                                                                                                                                                     | label_24:
    0x00014332 adds r2, r4, 4                                                                                                                                                                                                                                        |     r2 = r4 + 4;
    0x00014334 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x00014338 ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x0001433c subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x0001433e strex r0, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x00014342 cmp r0, 0                                                                                                                                                                                                                                             |         
    0x00014344 bne 0x14338                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r0 != 0);
    0x00014346 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x0001434a b 0x1416c                                                                                                                                                                                                                                             |     goto label_6;
                                                                                                                                                                                                                                                                     | label_22:
    0x0001434c adds r2, r7, 4                                                                                                                                                                                                                                        |     r2 = r7 + 4;
    0x0001434e dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x00014352 ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x00014356 subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x00014358 strex r0, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001435c cmp r0, 0                                                                                                                                                                                                                                             |         
    0x0001435e bne 0x14352                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r0 != 0);
    0x00014360 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x00014364 b 0x14132                                                                                                                                                                                                                                             |     goto label_7;
                                                                                                                                                                                                                                                                     | label_26:
    0x00014366 add.w r2, r0, 8                                                                                                                                                                                                                                       |     r2 = r0 + 8;
    0x0001436a dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x0001436e ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x00014372 subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x00014374 strex r4, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex r4, r1, [r2]");
    0x00014378 cmp r4, 0                                                                                                                                                                                                                                             |         
    0x0001437a bne 0x1436e                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r4 != 0);
    0x0001437c dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x00014380 b 0x141de                                                                                                                                                                                                                                             |     goto label_8;
                                                                                                                                                                                                                                                                     | label_19:
    0x00014382 adds r2, r0, 4                                                                                                                                                                                                                                        |     r2 = r0 + 4;
    0x00014384 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x00014388 ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x0001438c subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x0001438e strex ip, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00014392 cmp.w ip, 0                                                                                                                                                                                                                                           |         
    0x00014396 bne 0x14388                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (ip != 0);
    0x00014398 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x0001439c b 0x14112                                                                                                                                                                                                                                             |     goto label_9;
                                                                                                                                                                                                                                                                     | label_29:
    0x0001439e add.w r2, r0, 8                                                                                                                                                                                                                                       |     r2 = r0 + 8;
    0x000143a2 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x000143a6 ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000143aa subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x000143ac strex r4, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex r4, r1, [r2]");
    0x000143b0 cmp r4, 0                                                                                                                                                                                                                                             |         
    0x000143b2 bne 0x143a6                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r4 != 0);
    0x000143b4 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x000143b8 b 0x14228                                                                                                                                                                                                                                             |     goto label_10;
                                                                                                                                                                                                                                                                     | label_34:
    0x000143ba add.w r2, r4, 8                                                                                                                                                                                                                                       |     r2 = r4 + 8;
    0x000143be dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x000143c2 ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000143c6 subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x000143c8 strex r0, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x000143cc cmp r0, 0                                                                                                                                                                                                                                             |         
    0x000143ce bne 0x143c2                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r0 != 0);
    0x000143d0 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x000143d4 b 0x142e2                                                                                                                                                                                                                                             |     goto label_11;
                                                                                                                                                                                                                                                                     | label_35:
    0x000143d6 add.w r2, r7, 8                                                                                                                                                                                                                                       |     r2 = r7 + 8;
    0x000143da dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x000143de ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000143e2 subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x000143e4 strex r0, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x000143e8 cmp r0, 0                                                                                                                                                                                                                                             |         
    0x000143ea bne 0x143de                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r0 != 0);
    0x000143ec dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x000143f0 b 0x14308                                                                                                                                                                                                                                             |     goto label_12;
                                                                                                                                                                                                                                                                     | label_33:
    0x000143f2 add.w r2, r0, 8                                                                                                                                                                                                                                       |     r2 = r0 + 8;
    0x000143f6 dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                     |     do {
    0x000143fa ldrex r3, [r2]                                                                                                                                                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000143fe subs r1, r3, 1                                                                                                                                                                                                                                        |         r1 = r3 - 1;
    0x00014400 strex ip, r1, [r2]                                                                                                                                                                                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00014404 cmp.w ip, 0                                                                                                                                                                                                                                           |         
    0x00014408 bne 0x143fa                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (ip != 0);
    0x0001440a dmb ish                                                                                                                                                                                                                                               |     __asm ("dmb ish");
    0x0001440e b 0x142a4                                                                                                                                                                                                                                             |     goto label_13;
                                                                                                                                                                                                                                                                     | label_31:
    0x00014410 blx 0xea48                                                                                                                                                                                                                                            |     fcn_0000ea48 ();
                                                                                                                                                                                                                                                                     | label_28:
    0x00014414 ldr r3, [r5]                                                                                                                                                                                                                                          |     r3 = *(r5);
    0x00014416 ldr r0, [r6, 4]                                                                                                                                                                                                                                       |     r0 = *((r6 + 4));
    0x00014418 ldr.w r7, [r3, 0x94]                                                                                                                                                                                                                                  |     r7 = *((r3 + 0x94));
    0x0001441c ldr r3, [r6]                                                                                                                                                                                                                                          |     r3 = *(r6);
    0x0001441e str r0, [sp, 0x38]                                                                                                                                                                                                                                    |     var_38h = r0;
    0x00014420 str r3, [sp, 0x34]                                                                                                                                                                                                                                    |     var_34h = r3;
                                                                                                                                                                                                                                                                     |     if (r0 != 0) {
    0x00014422 cbz r0, 0x14428                                                                                                                                                                                                                                       |         
    0x00014424 bl 0x18fb0                                                                                                                                                                                                                                            |         fcn_00018fb0 (r0);
                                                                                                                                                                                                                                                                     |     }
    0x00014428 ldr r1, [sp, 0x10]                                                                                                                                                                                                                                    |     r1 = var_10h;
    0x0001442a mov r0, r5                                                                                                                                                                                                                                            |     r0 = r5;
    0x0001442c blx r7                                                                                                                                                                                                                                                |     uint32_t (*r7)(uint32_t, uint32_t) (r0, r1);
    0x0001442e ldr r0, [sp, 0x38]                                                                                                                                                                                                                                    |     r0 = var_38h;
                                                                                                                                                                                                                                                                     |     if (r0 != 0) {
    0x00014430 cbz r0, 0x14436                                                                                                                                                                                                                                       |         
    0x00014432 bl 0x18a84                                                                                                                                                                                                                                            |         fcn_00018a84 (r0);
                                                                                                                                                                                                                                                                     |     }
    0x00014436 movs r0, 0x28                                                                                                                                                                                                                                         |     r0 = 0x28;
    0x00014438 blx 0xe764                                                                                                                                                                                                                                            |     fcn_0000e764 ();
    0x0001443c mov r1, r4                                                                                                                                                                                                                                            |     r1 = r4;
    0x0001443e mov r4, r0                                                                                                                                                                                                                                            |     r4 = r0;
    0x00014440 bl 0x17aa8                                                                                                                                                                                                                                            |     fcn_00017aa8 (r0, r1);
    0x00014444 ldr r3, [pc, 0xac]                                                                                                                                                                                                                                    |     r3 = *(0x144f4);
    0x00014446 mov r0, r4                                                                                                                                                                                                                                            |     r0 = r4;
    0x00014448 ldr.w r2, [fp, r3]                                                                                                                                                                                                                                    |     r2 = *((fp + r3));
    0x0001444c ldr r3, [pc, 0xa8]                                                                                                                                                                                                                                    |     r3 = *(0x144f8);
    0x0001444e ldr.w r1, [fp, r3]                                                                                                                                                                                                                                    |     r1 = *((fp + r3));
    0x00014452 blx 0xed0c                                                                                                                                                                                                                                            |     fcn_0000ed0c ();
    0x00014456 ldr r0, [sp, 0x38]                                                                                                                                                                                                                                    |     r0 = var_38h;
                                                                                                                                                                                                                                                                     |     if (r0 == 0) {
    0x00014458 cbz r0, 0x144c6                                                                                                                                                                                                                                       |         goto label_36;
                                                                                                                                                                                                                                                                     |     }
    0x0001445a bl 0x18a84                                                                                                                                                                                                                                            |     fcn_00018a84 (r0);
    0x0001445e b 0x144c6                                                                                                                                                                                                                                             |     goto label_36;
                                                                                                                                                                                                                                                                     |     do {
                                                                                                                                                                                                                                                                     | label_14:
    0x00014468 blx 0xea54                                                                                                                                                                                                                                            |         fcn_0000ea54 ();
                                                                                                                                                                                                                                                                     | label_16:
    0x0001446c movs r0, 8                                                                                                                                                                                                                                            |         r0 = 8;
    0x0001446e blx 0xe764                                                                                                                                                                                                                                            |         fcn_0000e764 ();
    0x00014472 ldr r1, [pc, 0x88]                                                                                                                                                                                                                                    |         
    0x00014474 mov r4, r0                                                                                                                                                                                                                                            |         r4 = r0;
    0x00014476 add r1, pc                                                                                                                                                                                                                                            |         r1 = 0x28978;
    0x00014478 blx 0xee40                                                                                                                                                                                                                                            |         fcn_0000ee40 ();
    0x0001447c ldr r2, [pc, 0x80]                                                                                                                                                                                                                                    |         r2 = *(0x14500);
    0x0001447e mov r0, r4                                                                                                                                                                                                                                            |         r0 = r4;
    0x00014480 ldr r3, [pc, 0x80]                                                                                                                                                                                                                                    |         r3 = *(0x14504);
    0x00014482 ldr.w r2, [fp, r2]                                                                                                                                                                                                                                    |         r2 = *((fp + r2));
    0x00014486 ldr.w r1, [fp, r3]                                                                                                                                                                                                                                    |         r1 = *((fp + r3));
    0x0001448a blx 0xed0c                                                                                                                                                                                                                                            |         fcn_0000ed0c ();
    0x0001448e mov r0, r4                                                                                                                                                                                                                                            |         r0 = r4;
    0x00014490 blx 0xe878                                                                                                                                                                                                                                            |         fcn_0000e878 ();
    0x00014494 blx 0xea54                                                                                                                                                                                                                                            |         fcn_0000ea54 ();
    0x00014498 mov r0, r7                                                                                                                                                                                                                                            |         r0 = r7;
    0x0001449a bl 0x1842c                                                                                                                                                                                                                                            |         fcn_0001842c (r0);
                                                                                                                                                                                                                                                                     | label_15:
    0x0001449e ldr r0, [r6, 4]                                                                                                                                                                                                                                       |         r0 = *((r6 + 4));
    0x000144a0 cmp r0, 0                                                                                                                                                                                                                                             |         
    0x000144a2 beq 0x14468                                                                                                                                                                                                                                           |         
                                                                                                                                                                                                                                                                     |     } while (r0 == 0);
    0x000144a4 bl 0x18a84                                                                                                                                                                                                                                            |     fcn_00018a84 (r0);
    0x000144a8 b 0x14468                                                                                                                                                                                                                                             |     goto label_14;
                                                                                                                                                                                                                                                                     | label_36:
    0x000144c6 mov r0, sl                                                                                                                                                                                                                                            |     r0 = sl;
    0x000144c8 bl 0x1842c                                                                                                                                                                                                                                            |     fcn_0001842c (r0);
    0x000144cc b 0x1449e                                                                                                                                                                                                                                             |     goto label_15;
                                                                                                                                                                                                                                                                     | }
    ; assembly                                                                                                                                                                                                                                                                   | /* r2dec pseudo code output */
                                                                                                                                                                                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x149c0 */
                                                                                                                                                                                                                                                                                 | #include <stdint.h>
                                                                                                                                                                                                                                                                                 |  
    ; (fcn) method.mqtt::async_client.subscribe_std::shared_ptr_mqtt::string_collection_const___std::vector_int__std::allocator_int____const__void__mqtt::iaction_listener__std::vector_mqtt::subscribe_options__std::allocator_mqtt::subscribe_options____const__mqtt ()        | void method_mqtt::async_client_subscribe_std::shared_ptr_mqtt::string_collection_const_std::vector_int_std::allocator_int_const_void_mqtt::iaction_listener_std::vector_mqtt::subscribe_options_std::allocator_mqtt::subscribe_options_const_mqtt (int16_t arg_140h, int16_t arg_144h, int16_t arg_148h, int16_t arg_14ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                                                                                                                                 |     int16_t var_0h;
                                                                                                                                                                                                                                                                                 |     int16_t var_4h;
                                                                                                                                                                                                                                                                                 |     int16_t var_ch;
                                                                                                                                                                                                                                                                                 |     int16_t var_10h;
                                                                                                                                                                                                                                                                                 |     int16_t var_14h;
                                                                                                                                                                                                                                                                                 |     int16_t var_18h;
                                                                                                                                                                                                                                                                                 |     int16_t var_1ch;
                                                                                                                                                                                                                                                                                 |     int16_t var_20h;
                                                                                                                                                                                                                                                                                 |     int16_t var_24h;
                                                                                                                                                                                                                                                                                 |     int16_t var_28h;
                                                                                                                                                                                                                                                                                 |     int16_t var_3ch;
                                                                                                                                                                                                                                                                                 |     int16_t var_40h;
                                                                                                                                                                                                                                                                                 |     int16_t var_44h;
                                                                                                                                                                                                                                                                                 |     int16_t var_8ch;
                                                                                                                                                                                                                                                                                 |     int16_t var_90h;
                                                                                                                                                                                                                                                                                 |     int16_t var_a0h;
                                                                                                                                                                                                                                                                                 |     int16_t var_ach;
                                                                                                                                                                                                                                                                                 |     int16_t var_cch;
                                                                                                                                                                                                                                                                                 |     int16_t var_f4h;
                                                                                                                                                                                                                                                                                 |     int16_t var_f8h;
                                                                                                                                                                                                                                                                                 |     int16_t var_108h;
                                                                                                                                                                                                                                                                                 |     int16_t var_114h;
                                                                                                                                                                                                                                                                                 |     r0 = arg1;
                                                                                                                                                                                                                                                                                 |     r1 = arg2;
                                                                                                                                                                                                                                                                                 |     r2 = arg3;
                                                                                                                                                                                                                                                                                 |     r3 = arg4;
                                                                                                                                                                                                                                                                                 |     /* mqtt::async_client::subscribe(std::shared_ptr<qtt::string_collection const>, std::vector<int, std::allocator<int> > const&, void*, mqtt::iaction_listener&, std::vector<qtt::subscribe_options, std::allocator<qtt::subscribe_options> > const&, mqtt::properties const&) */
    0x000149c0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                                                                                                                                                                       |     
    0x000149c4 sub sp, 0x11c                                                                                                                                                                                                                                                     |     
    0x000149c6 str r2, [sp, 0x10]                                                                                                                                                                                                                                                |     var_10h = r2;
    0x000149c8 mov r6, r2                                                                                                                                                                                                                                                        |     r6 = r2;
    0x000149ca mov fp, r3                                                                                                                                                                                                                                                        |     
    0x000149cc mov r5, r0                                                                                                                                                                                                                                                        |     r5 = r0;
    0x000149ce ldr.w r2, [pc, 0x4cc]                                                                                                                                                                                                                                             |     
    0x000149d2 mov r4, r1                                                                                                                                                                                                                                                        |     r4 = r1;
    0x000149d4 ldr.w r3, [pc, 0x4c8]                                                                                                                                                                                                                                             |     r3 = *(0x14ea0);
    0x000149d8 movw r1, 0xaaab                                                                                                                                                                                                                                                   |     
    0x000149dc ldr.w sb, [r6]                                                                                                                                                                                                                                                    |     sb = *(r6);
    0x000149e0 movt r1, 0xaaaa                                                                                                                                                                                                                                                   |     
    0x000149e4 add r2, pc                                                                                                                                                                                                                                                        |     r2 = 0x29886;
    0x000149e6 ldr r3, [r2, r3]                                                                                                                                                                                                                                                  |     
    0x000149e8 ldr r3, [r3]                                                                                                                                                                                                                                                      |     r3 = imp._ZTINSt6thread6_StateE;
    0x000149ea str r3, [sp, 0x114]                                                                                                                                                                                                                                               |     var_114h = r3;
    0x000149ec mov.w r3, 0                                                                                                                                                                                                                                                       |     r3 = 0;
    0x000149f0 ldr r3, [sp, 0x140]                                                                                                                                                                                                                                               |     r3 = *(arg_140h);
    0x000149f2 str r3, [sp, 0x18]                                                                                                                                                                                                                                                |     var_18h = r3;
    0x000149f4 ldrd r2, r3, [fp]                                                                                                                                                                                                                                                 |     __asm ("ldrd r2, r3, [fp]");
    0x000149f8 subs r2, r3, r2                                                                                                                                                                                                                                                   |     r2 = r3 - r2;
    0x000149fa ldrd r0, r3, [sb]                                                                                                                                                                                                                                                 |     __asm ("ldrd r0, r3, [sb]");
    0x000149fe subs r3, r3, r0                                                                                                                                                                                                                                                   |     r3 -= r0;
    0x00014a00 asrs r3, r3, 3                                                                                                                                                                                                                                                    |     r3 >>= 3;
    0x00014a02 mul r3, r1, r3                                                                                                                                                                                                                                                    |     r3 = r1 * r3;
    0x00014a06 ldr.w r1, [pc, 0x49c]                                                                                                                                                                                                                                             |     r1 = *(0x00014ea4);
    0x00014a0a add r1, pc                                                                                                                                                                                                                                                        |     r1 = 0xaaabf4b9;
    0x00014a0c str r1, [sp, 0xc]                                                                                                                                                                                                                                                 |     var_ch = r1;
    0x00014a0e cmp.w r3, r2, asr 2                                                                                                                                                                                                                                               |     
    0x00014a12 ldr r1, [sp, 0x144]                                                                                                                                                                                                                                               |     r1 = *(arg_144h);
    0x00014a14 str r3, [sp, 0x14]                                                                                                                                                                                                                                                |     var_14h = r3;
    0x00014a16 str r1, [sp, 0x1c]                                                                                                                                                                                                                                                |     var_1ch = r1;
    0x00014a18 ldr r1, [sp, 0x148]                                                                                                                                                                                                                                               |     r1 = *(arg_148h);
    0x00014a1a str r1, [sp, 0x20]                                                                                                                                                                                                                                                |     var_20h = r1;
    0x00014a1c ldr r1, [sp, 0x14c]                                                                                                                                                                                                                                               |     r1 = *(arg_14ch);
    0x00014a1e str r1, [sp, 0x24]                                                                                                                                                                                                                                                |     var_24h = r1;
                                                                                                                                                                                                                                                                                 |     if (r3 != r2) {
    0x00014a20 bne.w 0x14e2c                                                                                                                                                                                                                                                     |         goto label_16;
                                                                                                                                                                                                                                                                                 |     }
    0x00014a24 ldr r3, [r4]                                                                                                                                                                                                                                                      |     r3 = *(r4);
    0x00014a26 ldr r3, [r3, -0x94]                                                                                                                                                                                                                                               |     r3 = *((r3 - 0x94));
    0x00014a2a add.w sl, r4, r3                                                                                                                                                                                                                                                  |     sl = r4 + r3;
    0x00014a2e ldr r3, [sp, 0x10]                                                                                                                                                                                                                                                |     r3 = var_10h;
    0x00014a30 ldr.w r8, [r3, 4]                                                                                                                                                                                                                                                 |     r8 = *((r3 + 4));
    0x00014a34 cmp.w r8, 0                                                                                                                                                                                                                                                       |     
                                                                                                                                                                                                                                                                                 |     if (r8 != 0) {
    0x00014a38 beq 0x14a54                                                                                                                                                                                                                                                       |         
    0x00014a3a ldr.w r3, [pc, 0x46c]                                                                                                                                                                                                                                             |         r3 = *(0x14eaa);
    0x00014a3e ldr r2, [sp, 0xc]                                                                                                                                                                                                                                                 |         r2 = var_ch;
    0x00014a40 ldr r6, [r2, r3]                                                                                                                                                                                                                                                  |         r6 = *((r2 + r3));
    0x00014a42 ldrb r3, [r6]                                                                                                                                                                                                                                                     |         r3 = *(r6);
    0x00014a44 cmp r3, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r3 == 0) {
    0x00014a46 beq.w 0x14c24                                                                                                                                                                                                                                                     |             goto label_17;
                                                                                                                                                                                                                                                                                 |         }
    0x00014a4a ldr.w r3, [r8, 4]                                                                                                                                                                                                                                                 |         r3 = *((r8 + 4));
    0x00014a4e adds r3, 1                                                                                                                                                                                                                                                        |         r3++;
    0x00014a50 str.w r3, [r8, 4]                                                                                                                                                                                                                                                 |         __asm ("str.w r3, [r8, 4]");
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_0:
    0x00014a54 movs r3, 0                                                                                                                                                                                                                                                        |     r3 = 0;
    0x00014a56 movs r0, 0xb0                                                                                                                                                                                                                                                     |     r0 = 0xb0;
    0x00014a58 str r3, [r5]                                                                                                                                                                                                                                                      |     *(r5) = r3;
    0x00014a5a blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x00014a5e movs r2, 1                                                                                                                                                                                                                                                        |     r2 = 1;
    0x00014a60 ldr.w r3, [pc, 0x448]                                                                                                                                                                                                                                             |     r3 = *(0x14eac);
    0x00014a64 strd r2, r2, [r0, 4]                                                                                                                                                                                                                                              |     __asm ("strd r2, r2, [r0, 4]");
    0x00014a68 mov r7, r0                                                                                                                                                                                                                                                        |     r7 = r0;
    0x00014a6a ldr r2, [sp, 0xc]                                                                                                                                                                                                                                                 |     r2 = var_ch;
    0x00014a6c ldr r3, [r2, r3]                                                                                                                                                                                                                                                  |     r3 = *((r2 + r3));
    0x00014a6e strd sb, r8, [sp, 0x3c]                                                                                                                                                                                                                                           |     __asm ("strd sb, r8, [var_3ch]");
    0x00014a72 mov sb, r0                                                                                                                                                                                                                                                        |     sb = r0;
    0x00014a74 adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
    0x00014a76 str r3, [sb], 0x10                                                                                                                                                                                                                                                |     *(sb) = r3;
                                                                                                                                                                                                                                                                                 |     sb += 0x10;
    0x00014a7a cmp.w r8, 0                                                                                                                                                                                                                                                       |     
                                                                                                                                                                                                                                                                                 |     if (r8 != 0) {
    0x00014a7e beq 0x14a98                                                                                                                                                                                                                                                       |         
    0x00014a80 ldr.w r3, [pc, 0x424]                                                                                                                                                                                                                                             |         r3 = *(0x14ea8);
    0x00014a84 ldr r6, [r2, r3]                                                                                                                                                                                                                                                  |         r6 = *((r2 + r3));
    0x00014a86 ldrb r3, [r6]                                                                                                                                                                                                                                                     |         r3 = *(r6);
    0x00014a88 cmp r3, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r3 == 0) {
    0x00014a8a beq.w 0x14c66                                                                                                                                                                                                                                                     |             goto label_18;
                                                                                                                                                                                                                                                                                 |         }
    0x00014a8e ldr.w r3, [r8, 4]                                                                                                                                                                                                                                                 |         r3 = *((r8 + 4));
    0x00014a92 adds r3, 1                                                                                                                                                                                                                                                        |         r3++;
    0x00014a94 str.w r3, [r8, 4]                                                                                                                                                                                                                                                 |         __asm ("str.w r3, [r8, 4]");
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_2:
    0x00014a98 ldr r3, [sp, 0x1c]                                                                                                                                                                                                                                                |     r3 = var_1ch;
    0x00014a9a mov r2, sl                                                                                                                                                                                                                                                        |     r2 = sl;
    0x00014a9c add.w sl, sp, 0x3c                                                                                                                                                                                                                                                |     sl += var_3ch;
    0x00014aa0 movs r1, 1                                                                                                                                                                                                                                                        |     r1 = 1;
    0x00014aa2 mov r0, sb                                                                                                                                                                                                                                                        |     r0 = sb;
    0x00014aa4 str r3, [sp, 4]                                                                                                                                                                                                                                                   |     var_4h = r3;
    0x00014aa6 ldr r3, [sp, 0x18]                                                                                                                                                                                                                                                |     r3 = var_18h;
    0x00014aa8 str r3, [sp]                                                                                                                                                                                                                                                      |     *(sp) = r3;
    0x00014aaa mov r3, sl                                                                                                                                                                                                                                                        |     r3 = sl;
    0x00014aac blx 0xe5d0                                                                                                                                                                                                                                                        |     fcn_0000e5d0 ();
    0x00014ab0 ldr r0, [sp, 0x40]                                                                                                                                                                                                                                                |     r0 = var_40h;
    0x00014ab2 ldr r3, [pc, 0x3f4]                                                                                                                                                                                                                                               |     r3 = *(0x14eaa);
    0x00014ab4 ldr r2, [sp, 0xc]                                                                                                                                                                                                                                                 |     r2 = var_ch;
    0x00014ab6 ldr r6, [r2, r3]                                                                                                                                                                                                                                                  |     r6 = *((r2 + r3));
                                                                                                                                                                                                                                                                                 |     if (r0 != 0) {
    0x00014ab8 cbz r0, 0x14ace                                                                                                                                                                                                                                                   |         
    0x00014aba ldrb r3, [r6]                                                                                                                                                                                                                                                     |         r3 = *(r6);
    0x00014abc cmp r3, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r3 == 0) {
    0x00014abe beq.w 0x14d3e                                                                                                                                                                                                                                                     |             goto label_19;
                                                                                                                                                                                                                                                                                 |         }
    0x00014ac2 ldr r3, [r0, 4]                                                                                                                                                                                                                                                   |         r3 = *((r0 + 4));
    0x00014ac4 subs r2, r3, 1                                                                                                                                                                                                                                                    |         r2 = r3 - 1;
    0x00014ac6 str r2, [r0, 4]                                                                                                                                                                                                                                                   |         *((r0 + 4)) = r2;
                                                                                                                                                                                                                                                                                 | label_9:
    0x00014ac8 cmp r3, 1                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r3 == 1) {
    0x00014aca beq.w 0x14c40                                                                                                                                                                                                                                                     |             goto label_20;
                                                                                                                                                                                                                                                                                 |         }
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_1:
    0x00014ace strd sb, r7, [r5]                                                                                                                                                                                                                                                 |     __asm ("strd sb, r7, [r5]");
    0x00014ad2 cmp.w r8, 0                                                                                                                                                                                                                                                       |     
                                                                                                                                                                                                                                                                                 |     if (r8 == 0) {
    0x00014ad6 beq.w 0x14c06                                                                                                                                                                                                                                                     |         goto label_21;
                                                                                                                                                                                                                                                                                 |     }
    0x00014ada ldrb r3, [r6]                                                                                                                                                                                                                                                     |     r3 = *(r6);
    0x00014adc cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x00014ade beq.w 0x14d06                                                                                                                                                                                                                                                     |         goto label_22;
                                                                                                                                                                                                                                                                                 |     }
    0x00014ae2 ldr.w r3, [r8, 4]                                                                                                                                                                                                                                                 |     r3 = *((r8 + 4));
    0x00014ae6 subs r2, r3, 1                                                                                                                                                                                                                                                    |     r2 = r3 - 1;
    0x00014ae8 str.w r2, [r8, 4]                                                                                                                                                                                                                                                 |     __asm ("str.w r2, [r8, 4]");
                                                                                                                                                                                                                                                                                 | label_7:
    0x00014aec cmp r3, 1                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 1) {
    0x00014aee beq.w 0x14ca6                                                                                                                                                                                                                                                     |         goto label_23;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_4:
    0x00014af2 ldrd r2, r7, [r5]                                                                                                                                                                                                                                                 |     __asm ("ldrd r2, r7, [r5]");
    0x00014af6 ldr r3, [sp, 0x14]                                                                                                                                                                                                                                                |     r3 = var_14h;
    0x00014af8 str.w r3, [r2, 0x8c]                                                                                                                                                                                                                                              |     __asm ("str.w r3, [r2, 0x8c]");
    0x00014afc ldr r3, [r4]                                                                                                                                                                                                                                                      |     r3 = *(r4);
    0x00014afe ldr.w r3, [r3, 0x8c]                                                                                                                                                                                                                                              |     r3 = *((r3 + 0x8c));
    0x00014b02 strd r2, r7, [sp, 0x3c]                                                                                                                                                                                                                                           |     __asm ("strd r2, r7, [var_3ch]");
    0x00014b06 cmp r7, 0                                                                                                                                                                                                                                                         |     
    0x00014b08 bne.w 0x14c16                                                                                                                                                                                                                                                     |     
                                                                                                                                                                                                                                                                                 |     while (1) {
                                                                                                                                                                                                                                                                                 | label_5:
    0x00014b0c mov r1, sl                                                                                                                                                                                                                                                        |         r1 = sl;
    0x00014b0e mov r0, r4                                                                                                                                                                                                                                                        |         r0 = r4;
    0x00014b10 blx r3                                                                                                                                                                                                                                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00014b12 ldr r7, [sp, 0x40]                                                                                                                                                                                                                                                |         r7 = var_40h;
                                                                                                                                                                                                                                                                                 |         if (r7 != 0) {
    0x00014b14 cbz r7, 0x14b2a                                                                                                                                                                                                                                                   |             
    0x00014b16 ldrb r3, [r6]                                                                                                                                                                                                                                                     |             r3 = *(r6);
    0x00014b18 cmp r3, 0                                                                                                                                                                                                                                                         |             
                                                                                                                                                                                                                                                                                 |             if (r3 == 0) {
    0x00014b1a beq.w 0x14cec                                                                                                                                                                                                                                                     |                 goto label_24;
                                                                                                                                                                                                                                                                                 |             }
    0x00014b1e ldr r3, [r7, 4]                                                                                                                                                                                                                                                   |             r3 = *((r7 + 4));
    0x00014b20 subs r2, r3, 1                                                                                                                                                                                                                                                    |             r2 = r3 - 1;
    0x00014b22 str r2, [r7, 4]                                                                                                                                                                                                                                                   |             *((r7 + 4)) = r2;
                                                                                                                                                                                                                                                                                 | label_6:
    0x00014b24 cmp r3, 1                                                                                                                                                                                                                                                         |             
                                                                                                                                                                                                                                                                                 |             if (r3 == 1) {
    0x00014b26 beq.w 0x14c82                                                                                                                                                                                                                                                     |                 goto label_25;
                                                                                                                                                                                                                                                                                 |             }
                                                                                                                                                                                                                                                                                 |         }
                                                                                                                                                                                                                                                                                 | label_3:
    0x00014b2a add.w r8, sp, 0xac                                                                                                                                                                                                                                                |         r8 += var_ach;
    0x00014b2e ldr r1, [r4, 0x50]                                                                                                                                                                                                                                                |         r1 = *((r4 + 0x50));
    0x00014b30 mov r0, r8                                                                                                                                                                                                                                                        |         r0 = r8;
    0x00014b32 blx 0xece8                                                                                                                                                                                                                                                        |         fcn_0000ece8 ();
    0x00014b36 mov r1, r5                                                                                                                                                                                                                                                        |         r1 = r5;
    0x00014b38 mov r0, r8                                                                                                                                                                                                                                                        |         r0 = r8;
    0x00014b3a blx 0xeeb0                                                                                                                                                                                                                                                        |         fcn_0000eeb0 ();
    0x00014b3e ldr r1, [sp, 0x20]                                                                                                                                                                                                                                                |         r1 = var_20h;
    0x00014b40 mov r0, r8                                                                                                                                                                                                                                                        |         r0 = r8;
    0x00014b42 blx 0xeb94                                                                                                                                                                                                                                                        |         MQTTAsync_sendMessage ();
    0x00014b46 add r7, sp, 0xf8                                                                                                                                                                                                                                                  |         r7 += var_f8h;
    0x00014b48 mov r0, r7                                                                                                                                                                                                                                                        |         r0 = r7;
    0x00014b4a blx 0xedb4                                                                                                                                                                                                                                                        |         fcn_0000edb4 ();
    0x00014b4e add r3, sp, 0x28                                                                                                                                                                                                                                                  |         r3 += var_28h;
    0x00014b50 ldr r1, [sp, 0x24]                                                                                                                                                                                                                                                |         r1 = var_24h;
    0x00014b52 mov r0, r3                                                                                                                                                                                                                                                        |         r0 = r3;
    0x00014b54 str r3, [sp, 0x18]                                                                                                                                                                                                                                                |         var_18h = r3;
    0x00014b56 blx 0xeb24                                                                                                                                                                                                                                                        |         fcn_0000eb24 ();
    0x00014b5a ldr r3, [sp, 0x18]                                                                                                                                                                                                                                                |         r3 = var_18h;
    0x00014b5c add.w sb, sp, 0x44                                                                                                                                                                                                                                                |         sb += var_44h;
    0x00014b60 add.w ip, sp, 0xcc                                                                                                                                                                                                                                                |         
    0x00014b64 ldm r3, {r0, r1, r2, r3}                                                                                                                                                                                                                                          |         r0 = *(r3);
                                                                                                                                                                                                                                                                                 |         r1 = *((r3 + 4));
                                                                                                                                                                                                                                                                                 |         r2 = *((r3 + 8));
                                                                                                                                                                                                                                                                                 |         r3 = *((r3 + 12));
    0x00014b66 stm.w r7, {r0, r1, r2, r3}                                                                                                                                                                                                                                        |         *(r7) = r0;
                                                                                                                                                                                                                                                                                 |         *((r7 + 4)) = r1;
                                                                                                                                                                                                                                                                                 |         *((r7 + 8)) = r2;
                                                                                                                                                                                                                                                                                 |         *((r7 + 12)) = r3;
    0x00014b6a stm.w ip, {r0, r1, r2, r3}                                                                                                                                                                                                                                        |         *(ip) = r0;
                                                                                                                                                                                                                                                                                 |         *((ip + 4)) = r1;
                                                                                                                                                                                                                                                                                 |         *((ip + 8)) = r2;
                                                                                                                                                                                                                                                                                 |         *((ip + 12)) = r3;
    0x00014b6e mov r1, r8                                                                                                                                                                                                                                                        |         r1 = r8;
    0x00014b70 mov r0, sb                                                                                                                                                                                                                                                        |         r0 = sb;
    0x00014b72 blx 0xed60                                                                                                                                                                                                                                                        |         fcn_0000ed60 ();
    0x00014b76 ldr r0, [sp, 0x108]                                                                                                                                                                                                                                               |         r0 = var_108h;
                                                                                                                                                                                                                                                                                 |         if (r0 != 0) {
    0x00014b78 cbz r0, 0x14b7e                                                                                                                                                                                                                                                   |             
    0x00014b7a blx 0xe9a4                                                                                                                                                                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                                                                                                                                                                 |         }
    0x00014b7e mov r0, r7                                                                                                                                                                                                                                                        |         r0 = r7;
    0x00014b80 blx 0xedb4                                                                                                                                                                                                                                                        |         fcn_0000edb4 ();
    0x00014b84 ldr r0, [sp, 0xf4]                                                                                                                                                                                                                                                |         r0 = var_f4h;
                                                                                                                                                                                                                                                                                 |         if (r0 != 0) {
    0x00014b86 cbz r0, 0x14ba0                                                                                                                                                                                                                                                   |             
    0x00014b88 ldrb r3, [r6]                                                                                                                                                                                                                                                     |             r3 = *(r6);
    0x00014b8a cmp r3, 0                                                                                                                                                                                                                                                         |             
                                                                                                                                                                                                                                                                                 |             if (r3 == 0) {
    0x00014b8c beq.w 0x14d22                                                                                                                                                                                                                                                     |                 goto label_26;
                                                                                                                                                                                                                                                                                 |             }
    0x00014b90 ldr r3, [r0, 8]                                                                                                                                                                                                                                                   |             r3 = *((r0 + 8));
    0x00014b92 subs r2, r3, 1                                                                                                                                                                                                                                                    |             r2 = r3 - 1;
    0x00014b94 str r2, [r0, 8]                                                                                                                                                                                                                                                   |             *((r0 + 8)) = r2;
                                                                                                                                                                                                                                                                                 | label_8:
    0x00014b96 cmp r3, 1                                                                                                                                                                                                                                                         |             
                                                                                                                                                                                                                                                                                 |             if (r3 != 1) {
    0x00014b98 bne 0x14ba0                                                                                                                                                                                                                                                       |                 goto label_27;
                                                                                                                                                                                                                                                                                 |             }
    0x00014b9a ldr r3, [r0]                                                                                                                                                                                                                                                      |             r3 = *(r0);
    0x00014b9c ldr r3, [r3, 0xc]                                                                                                                                                                                                                                                 |             r3 = *((r3 + 0xc));
    0x00014b9e blx r3                                                                                                                                                                                                                                                            |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                                                                                                                                 |         }
                                                                                                                                                                                                                                                                                 | label_27:
    0x00014ba0 ldr r3, [sp, 0x10]                                                                                                                                                                                                                                                |         r3 = var_10h;
    0x00014ba2 ldr r1, [sp, 0x14]                                                                                                                                                                                                                                                |         r1 = var_14h;
    0x00014ba4 ldr r2, [r3]                                                                                                                                                                                                                                                      |         r2 = *(r3);
    0x00014ba6 ldr.w r3, [fp]                                                                                                                                                                                                                                                    |         r3 = *(fp);
    0x00014baa ldr r2, [r2, 0xc]                                                                                                                                                                                                                                                 |         r2 = *((r2 + 0xc));
    0x00014bac str.w sb, [sp]                                                                                                                                                                                                                                                    |         __asm ("str.w sb, [sp]");
    0x00014bb0 ldr r0, [r4, 0x1c]                                                                                                                                                                                                                                                |         r0 = *((r4 + 0x1c));
    0x00014bb2 blx 0xebac                                                                                                                                                                                                                                                        |         r0 = fcn_0000ebac ();
    0x00014bb6 mov r7, r0                                                                                                                                                                                                                                                        |         r7 = r0;
    0x00014bb8 cmp r0, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r0 != 0) {
    0x00014bba bne.w 0x14dd0                                                                                                                                                                                                                                                     |             goto label_28;
                                                                                                                                                                                                                                                                                 |         }
    0x00014bbe ldr r0, [sp, 0xa0]                                                                                                                                                                                                                                                |         r0 = var_a0h;
                                                                                                                                                                                                                                                                                 |         if (r0 != 0) {
    0x00014bc0 cbz r0, 0x14bc6                                                                                                                                                                                                                                                   |             
    0x00014bc2 blx 0xe9a4                                                                                                                                                                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                                                                                                                                                                 |         }
    0x00014bc6 add r0, sp, 0x90                                                                                                                                                                                                                                                  |         r0 += var_90h;
    0x00014bc8 blx 0xedb4                                                                                                                                                                                                                                                        |         fcn_0000edb4 ();
    0x00014bcc ldr r0, [sp, 0x8c]                                                                                                                                                                                                                                                |         r0 = var_8ch;
                                                                                                                                                                                                                                                                                 |         if (r0 != 0) {
    0x00014bce cbz r0, 0x14be8                                                                                                                                                                                                                                                   |             
    0x00014bd0 ldrb r3, [r6]                                                                                                                                                                                                                                                     |             r3 = *(r6);
    0x00014bd2 cmp r3, 0                                                                                                                                                                                                                                                         |             
                                                                                                                                                                                                                                                                                 |             if (r3 == 0) {
    0x00014bd4 beq.w 0x14d5a                                                                                                                                                                                                                                                     |                 goto label_29;
                                                                                                                                                                                                                                                                                 |             }
    0x00014bd8 ldr r3, [r0, 8]                                                                                                                                                                                                                                                   |             r3 = *((r0 + 8));
    0x00014bda subs r2, r3, 1                                                                                                                                                                                                                                                    |             r2 = r3 - 1;
    0x00014bdc str r2, [r0, 8]                                                                                                                                                                                                                                                   |             *((r0 + 8)) = r2;
                                                                                                                                                                                                                                                                                 | label_10:
    0x00014bde cmp r3, 1                                                                                                                                                                                                                                                         |             
                                                                                                                                                                                                                                                                                 |             if (r3 != 1) {
    0x00014be0 bne 0x14be8                                                                                                                                                                                                                                                       |                 goto label_30;
                                                                                                                                                                                                                                                                                 |             }
    0x00014be2 ldr r3, [r0]                                                                                                                                                                                                                                                      |             r3 = *(r0);
    0x00014be4 ldr r3, [r3, 0xc]                                                                                                                                                                                                                                                 |             r3 = *((r3 + 0xc));
    0x00014be6 blx r3                                                                                                                                                                                                                                                            |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                                                                                                                                 |         }
                                                                                                                                                                                                                                                                                 | label_30:
    0x00014be8 ldr r2, [pc, 0x2c4]                                                                                                                                                                                                                                               |         
    0x00014bea ldr r3, [pc, 0x2b4]                                                                                                                                                                                                                                               |         r3 = *(0x14ea2);
    0x00014bec add r2, pc                                                                                                                                                                                                                                                        |         r2 = "unsubscribe";
    0x00014bee ldr r3, [r2, r3]                                                                                                                                                                                                                                                  |         r3 = "unsubscribe";
    0x00014bf0 ldr r2, [r3]                                                                                                                                                                                                                                                      |         r2 = "unsubscribe";
    0x00014bf2 ldr r3, [sp, 0x114]                                                                                                                                                                                                                                               |         r3 = var_114h;
    0x00014bf4 eors r2, r3                                                                                                                                                                                                                                                       |         r2 ^= r3;
    0x00014bf6 mov.w r3, 0                                                                                                                                                                                                                                                       |         r3 = 0;
                                                                                                                                                                                                                                                                                 |         if (r2 != r3) {
    0x00014bfa bne.w 0x14dcc                                                                                                                                                                                                                                                     |             goto label_31;
                                                                                                                                                                                                                                                                                 |         }
    0x00014bfe mov r0, r5                                                                                                                                                                                                                                                        |         r0 = r5;
    0x00014c00 add sp, 0x11c                                                                                                                                                                                                                                                     |         
    0x00014c02 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                                                                                                                                        |         
                                                                                                                                                                                                                                                                                 | label_21:
    0x00014c06 ldr r3, [sp, 0x14]                                                                                                                                                                                                                                                |         r3 = var_14h;
    0x00014c08 str.w r3, [r7, 0x9c]                                                                                                                                                                                                                                              |         __asm ("str.w r3, [r7, 0x9c]");
    0x00014c0c ldr r3, [r4]                                                                                                                                                                                                                                                      |         r3 = *(r4);
    0x00014c0e ldr.w r3, [r3, 0x8c]                                                                                                                                                                                                                                              |         r3 = *((r3 + 0x8c));
    0x00014c12 strd sb, r7, [sp, 0x3c]                                                                                                                                                                                                                                           |         __asm ("strd sb, r7, [var_3ch]");
    0x00014c16 ldrb r2, [r6]                                                                                                                                                                                                                                                     |         r2 = *(r6);
    0x00014c18 cmp r2, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r2 == 0) {
    0x00014c1a beq 0x14cd2                                                                                                                                                                                                                                                       |             goto label_32;
                                                                                                                                                                                                                                                                                 |         }
    0x00014c1c ldr r2, [r7, 4]                                                                                                                                                                                                                                                   |         r2 = *((r7 + 4));
    0x00014c1e adds r2, 1                                                                                                                                                                                                                                                        |         r2++;
    0x00014c20 str r2, [r7, 4]                                                                                                                                                                                                                                                   |         *((r7 + 4)) = r2;
    0x00014c22 b 0x14b0c                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_17:
    0x00014c24 add.w r3, r8, 4                                                                                                                                                                                                                                                   |     r3 = r8 + 4;
    0x00014c28 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014c2c ldrex r1, [r3]                                                                                                                                                                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x00014c30 adds r1, 1                                                                                                                                                                                                                                                        |         r1++;
    0x00014c32 strex r2, r1, [r3]                                                                                                                                                                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x00014c36 cmp r2, 0                                                                                                                                                                                                                                                         |         
    0x00014c38 bne 0x14c2c                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r2 != 0);
    0x00014c3a dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014c3e b 0x14a54                                                                                                                                                                                                                                                         |     goto label_0;
                                                                                                                                                                                                                                                                                 | label_20:
    0x00014c40 ldr r3, [r0]                                                                                                                                                                                                                                                      |     r3 = *(r0);
    0x00014c42 str r0, [sp, 0x18]                                                                                                                                                                                                                                                |     var_18h = r0;
    0x00014c44 ldr r3, [r3, 8]                                                                                                                                                                                                                                                   |     r3 = *((r3 + 8));
    0x00014c46 blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014c48 ldrb r3, [r6]                                                                                                                                                                                                                                                     |     r3 = *(r6);
    0x00014c4a ldr r0, [sp, 0x18]                                                                                                                                                                                                                                                |     r0 = var_18h;
    0x00014c4c cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x00014c4e beq.w 0x14dae                                                                                                                                                                                                                                                     |         goto label_33;
                                                                                                                                                                                                                                                                                 |     }
    0x00014c52 ldr r3, [r0, 8]                                                                                                                                                                                                                                                   |     r3 = *((r0 + 8));
    0x00014c54 subs r2, r3, 1                                                                                                                                                                                                                                                    |     r2 = r3 - 1;
    0x00014c56 str r2, [r0, 8]                                                                                                                                                                                                                                                   |     *((r0 + 8)) = r2;
                                                                                                                                                                                                                                                                                 | label_13:
    0x00014c58 cmp r3, 1                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 != 1) {
    0x00014c5a bne.w 0x14ace                                                                                                                                                                                                                                                     |         goto label_1;
                                                                                                                                                                                                                                                                                 |     }
    0x00014c5e ldr r3, [r0]                                                                                                                                                                                                                                                      |     r3 = *(r0);
    0x00014c60 ldr r3, [r3, 0xc]                                                                                                                                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x00014c62 blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t) (r3);
    0x00014c64 b 0x14ace                                                                                                                                                                                                                                                         |     goto label_1;
                                                                                                                                                                                                                                                                                 | label_18:
    0x00014c66 add.w r3, r8, 4                                                                                                                                                                                                                                                   |     r3 = r8 + 4;
    0x00014c6a dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014c6e ldrex r1, [r3]                                                                                                                                                                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x00014c72 adds r1, 1                                                                                                                                                                                                                                                        |         r1++;
    0x00014c74 strex r2, r1, [r3]                                                                                                                                                                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x00014c78 cmp r2, 0                                                                                                                                                                                                                                                         |         
    0x00014c7a bne 0x14c6e                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r2 != 0);
    0x00014c7c dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014c80 b 0x14a98                                                                                                                                                                                                                                                         |     goto label_2;
                                                                                                                                                                                                                                                                                 | label_25:
    0x00014c82 ldr r3, [r7]                                                                                                                                                                                                                                                      |     r3 = *(r7);
    0x00014c84 mov r0, r7                                                                                                                                                                                                                                                        |     r0 = r7;
    0x00014c86 ldr r3, [r3, 8]                                                                                                                                                                                                                                                   |     r3 = *((r3 + 8));
    0x00014c88 blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014c8a ldrb r3, [r6]                                                                                                                                                                                                                                                     |     r3 = *(r6);
    0x00014c8c cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x00014c8e beq 0x14d76                                                                                                                                                                                                                                                       |         goto label_34;
                                                                                                                                                                                                                                                                                 |     }
    0x00014c90 ldr r3, [r7, 8]                                                                                                                                                                                                                                                   |     r3 = *((r7 + 8));
    0x00014c92 subs r2, r3, 1                                                                                                                                                                                                                                                    |     r2 = r3 - 1;
    0x00014c94 str r2, [r7, 8]                                                                                                                                                                                                                                                   |     *((r7 + 8)) = r2;
                                                                                                                                                                                                                                                                                 | label_11:
    0x00014c96 cmp r3, 1                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 != 1) {
    0x00014c98 bne.w 0x14b2a                                                                                                                                                                                                                                                     |         goto label_3;
                                                                                                                                                                                                                                                                                 |     }
    0x00014c9c ldr r3, [r7]                                                                                                                                                                                                                                                      |     r3 = *(r7);
    0x00014c9e mov r0, r7                                                                                                                                                                                                                                                        |     r0 = r7;
    0x00014ca0 ldr r3, [r3, 0xc]                                                                                                                                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x00014ca2 blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014ca4 b 0x14b2a                                                                                                                                                                                                                                                         |     goto label_3;
                                                                                                                                                                                                                                                                                 | label_23:
    0x00014ca6 ldr.w r3, [r8]                                                                                                                                                                                                                                                    |     r3 = *(r8);
    0x00014caa mov r0, r8                                                                                                                                                                                                                                                        |     r0 = r8;
    0x00014cac ldr r3, [r3, 8]                                                                                                                                                                                                                                                   |     r3 = *((r3 + 8));
    0x00014cae blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014cb0 ldrb r3, [r6]                                                                                                                                                                                                                                                     |     r3 = *(r6);
    0x00014cb2 cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x00014cb4 beq 0x14d92                                                                                                                                                                                                                                                       |         goto label_35;
                                                                                                                                                                                                                                                                                 |     }
    0x00014cb6 ldr.w r3, [r8, 8]                                                                                                                                                                                                                                                 |     r3 = *((r8 + 8));
    0x00014cba subs r2, r3, 1                                                                                                                                                                                                                                                    |     r2 = r3 - 1;
    0x00014cbc str.w r2, [r8, 8]                                                                                                                                                                                                                                                 |     __asm ("str.w r2, [r8, 8]");
                                                                                                                                                                                                                                                                                 | label_12:
    0x00014cc0 cmp r3, 1                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 != 1) {
    0x00014cc2 bne.w 0x14af2                                                                                                                                                                                                                                                     |         goto label_4;
                                                                                                                                                                                                                                                                                 |     }
    0x00014cc6 ldr.w r3, [r8]                                                                                                                                                                                                                                                    |     r3 = *(r8);
    0x00014cca mov r0, r8                                                                                                                                                                                                                                                        |     r0 = r8;
    0x00014ccc ldr r3, [r3, 0xc]                                                                                                                                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x00014cce blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014cd0 b 0x14af2                                                                                                                                                                                                                                                         |     goto label_4;
                                                                                                                                                                                                                                                                                 | label_32:
    0x00014cd2 adds r7, 4                                                                                                                                                                                                                                                        |     r7 += 4;
    0x00014cd4 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014cd8 ldrex r2, [r7]                                                                                                                                                                                                                                                    |         __asm ("ldrex r2, [r7]");
    0x00014cdc adds r2, 1                                                                                                                                                                                                                                                        |         r2++;
    0x00014cde strex r1, r2, [r7]                                                                                                                                                                                                                                                |         __asm ("strex r1, r2, [r7]");
    0x00014ce2 cmp r1, 0                                                                                                                                                                                                                                                         |         
    0x00014ce4 bne 0x14cd8                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r1 != 0);
    0x00014ce6 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014cea b 0x14b0c                                                                                                                                                                                                                                                         |     goto label_5;
                                                                                                                                                                                                                                                                                 | label_24:
    0x00014cec adds r2, r7, 4                                                                                                                                                                                                                                                    |     r2 = r7 + 4;
    0x00014cee dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014cf2 ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014cf6 subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014cf8 strex r0, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00014cfc cmp r0, 0                                                                                                                                                                                                                                                         |         
    0x00014cfe bne 0x14cf2                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r0 != 0);
    0x00014d00 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014d04 b 0x14b24                                                                                                                                                                                                                                                         |     goto label_6;
                                                                                                                                                                                                                                                                                 | label_22:
    0x00014d06 add.w r2, r8, 4                                                                                                                                                                                                                                                   |     r2 = r8 + 4;
    0x00014d0a dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014d0e ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014d12 subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014d14 strex r0, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00014d18 cmp r0, 0                                                                                                                                                                                                                                                         |         
    0x00014d1a bne 0x14d0e                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r0 != 0);
    0x00014d1c dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014d20 b 0x14aec                                                                                                                                                                                                                                                         |     goto label_7;
                                                                                                                                                                                                                                                                                 | label_26:
    0x00014d22 add.w r2, r0, 8                                                                                                                                                                                                                                                   |     r2 = r0 + 8;
    0x00014d26 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014d2a ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014d2e subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014d30 strex r7, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r7, r1, [r2]");
    0x00014d34 cmp r7, 0                                                                                                                                                                                                                                                         |         
    0x00014d36 bne 0x14d2a                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r7 != 0);
    0x00014d38 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014d3c b 0x14b96                                                                                                                                                                                                                                                         |     goto label_8;
                                                                                                                                                                                                                                                                                 | label_19:
    0x00014d3e adds r2, r0, 4                                                                                                                                                                                                                                                    |     r2 = r0 + 4;
    0x00014d40 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014d44 ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014d48 subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014d4a strex ip, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex ip, r1, [r2]");
    0x00014d4e cmp.w ip, 0                                                                                                                                                                                                                                                       |         
    0x00014d52 bne 0x14d44                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (ip != 0);
    0x00014d54 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014d58 b 0x14ac8                                                                                                                                                                                                                                                         |     goto label_9;
                                                                                                                                                                                                                                                                                 | label_29:
    0x00014d5a add.w r2, r0, 8                                                                                                                                                                                                                                                   |     r2 = r0 + 8;
    0x00014d5e dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014d62 ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014d66 subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014d68 strex r4, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r4, r1, [r2]");
    0x00014d6c cmp r4, 0                                                                                                                                                                                                                                                         |         
    0x00014d6e bne 0x14d62                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r4 != 0);
    0x00014d70 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014d74 b 0x14bde                                                                                                                                                                                                                                                         |     goto label_10;
                                                                                                                                                                                                                                                                                 | label_34:
    0x00014d76 add.w r2, r7, 8                                                                                                                                                                                                                                                   |     r2 = r7 + 8;
    0x00014d7a dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014d7e ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014d82 subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014d84 strex r0, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00014d88 cmp r0, 0                                                                                                                                                                                                                                                         |         
    0x00014d8a bne 0x14d7e                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r0 != 0);
    0x00014d8c dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014d90 b 0x14c96                                                                                                                                                                                                                                                         |     goto label_11;
                                                                                                                                                                                                                                                                                 | label_35:
    0x00014d92 add.w r2, r8, 8                                                                                                                                                                                                                                                   |     r2 = r8 + 8;
    0x00014d96 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014d9a ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014d9e subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014da0 strex r0, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00014da4 cmp r0, 0                                                                                                                                                                                                                                                         |         
    0x00014da6 bne 0x14d9a                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r0 != 0);
    0x00014da8 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014dac b 0x14cc0                                                                                                                                                                                                                                                         |     goto label_12;
                                                                                                                                                                                                                                                                                 | label_33:
    0x00014dae add.w r2, r0, 8                                                                                                                                                                                                                                                   |     r2 = r0 + 8;
    0x00014db2 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00014db6 ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014dba subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x00014dbc strex ip, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex ip, r1, [r2]");
    0x00014dc0 cmp.w ip, 0                                                                                                                                                                                                                                                       |         
    0x00014dc4 bne 0x14db6                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (ip != 0);
    0x00014dc6 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x00014dca b 0x14c58                                                                                                                                                                                                                                                         |     goto label_13;
                                                                                                                                                                                                                                                                                 | label_31:
    0x00014dcc blx 0xea48                                                                                                                                                                                                                                                        |     fcn_0000ea48 ();
                                                                                                                                                                                                                                                                                 | label_28:
    0x00014dd0 ldr r3, [r4]                                                                                                                                                                                                                                                      |     r3 = *(r4);
    0x00014dd2 ldr r0, [r5, 4]                                                                                                                                                                                                                                                   |     r0 = *((r5 + 4));
    0x00014dd4 ldr.w r6, [r3, 0x94]                                                                                                                                                                                                                                              |     r6 = *((r3 + 0x94));
    0x00014dd8 ldr r3, [r5]                                                                                                                                                                                                                                                      |     r3 = *(r5);
    0x00014dda str r0, [sp, 0x40]                                                                                                                                                                                                                                                |     var_40h = r0;
    0x00014ddc str r3, [sp, 0x3c]                                                                                                                                                                                                                                                |     var_3ch = r3;
                                                                                                                                                                                                                                                                                 |     if (r0 != 0) {
    0x00014dde cbz r0, 0x14de4                                                                                                                                                                                                                                                   |         
    0x00014de0 bl 0x18fb0                                                                                                                                                                                                                                                        |         fcn_00018fb0 (r0);
                                                                                                                                                                                                                                                                                 |     }
    0x00014de4 mov r1, sl                                                                                                                                                                                                                                                        |     r1 = sl;
    0x00014de6 mov r0, r4                                                                                                                                                                                                                                                        |     r0 = r4;
    0x00014de8 blx r6                                                                                                                                                                                                                                                            |     uint32_t (*r6)(uint32_t, uint32_t) (r0, r1);
    0x00014dea ldr r0, [sp, 0x40]                                                                                                                                                                                                                                                |     r0 = var_40h;
                                                                                                                                                                                                                                                                                 |     if (r0 != 0) {
    0x00014dec cbz r0, 0x14df2                                                                                                                                                                                                                                                   |         
    0x00014dee bl 0x18a84                                                                                                                                                                                                                                                        |         fcn_00018a84 (r0);
                                                                                                                                                                                                                                                                                 |     }
    0x00014df2 movs r0, 0x28                                                                                                                                                                                                                                                     |     r0 = 0x28;
    0x00014df4 blx 0xe764                                                                                                                                                                                                                                                        |     fcn_0000e764 ();
    0x00014df8 mov r1, r7                                                                                                                                                                                                                                                        |     r1 = r7;
    0x00014dfa mov r4, r0                                                                                                                                                                                                                                                        |     r4 = r0;
    0x00014dfc bl 0x17aa8                                                                                                                                                                                                                                                        |     fcn_00017aa8 (r0, r1);
    0x00014e00 ldr r3, [pc, 0xb0]                                                                                                                                                                                                                                                |     r3 = *(0x14eb4);
    0x00014e02 mov r0, r4                                                                                                                                                                                                                                                        |     r0 = r4;
    0x00014e04 ldr r1, [sp, 0xc]                                                                                                                                                                                                                                                 |     r1 = var_ch;
    0x00014e06 ldr r2, [r1, r3]                                                                                                                                                                                                                                                  |     r2 = *((r1 + r3));
    0x00014e08 ldr r3, [pc, 0xac]                                                                                                                                                                                                                                                |     r3 = *(0x14eb8);
    0x00014e0a ldr r1, [r1, r3]                                                                                                                                                                                                                                                  |     r1 = *((r1 + r3));
    0x00014e0c blx 0xed0c                                                                                                                                                                                                                                                        |     fcn_0000ed0c ();
    0x00014e10 ldr r0, [sp, 0x40]                                                                                                                                                                                                                                                |     r0 = var_40h;
    0x00014e12 cmp r0, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r0 == 0) {
    0x00014e14 beq 0x14e86                                                                                                                                                                                                                                                       |         goto label_36;
                                                                                                                                                                                                                                                                                 |     }
    0x00014e16 bl 0x18a84                                                                                                                                                                                                                                                        |     fcn_00018a84 (r0);
    0x00014e1a b 0x14e86                                                                                                                                                                                                                                                         |     goto label_36;
                                                                                                                                                                                                                                                                                 |     do {
                                                                                                                                                                                                                                                                                 | label_14:
    0x00014e28 blx 0xea54                                                                                                                                                                                                                                                        |         fcn_0000ea54 ();
                                                                                                                                                                                                                                                                                 | label_16:
    0x00014e2c movs r0, 8                                                                                                                                                                                                                                                        |         r0 = 8;
    0x00014e2e blx 0xe764                                                                                                                                                                                                                                                        |         fcn_0000e764 ();
    0x00014e32 ldr r1, [pc, 0x88]                                                                                                                                                                                                                                                |         
    0x00014e34 mov r4, r0                                                                                                                                                                                                                                                        |         r4 = r0;
    0x00014e36 add r1, pc                                                                                                                                                                                                                                                        |         
    0x00014e38 blx 0xee40                                                                                                                                                                                                                                                        |         fcn_0000ee40 ();
    0x00014e3c ldr r1, [sp, 0xc]                                                                                                                                                                                                                                                 |         r1 = var_ch;
    0x00014e3e mov r0, r4                                                                                                                                                                                                                                                        |         r0 = r4;
    0x00014e40 ldr r2, [pc, 0x7c]                                                                                                                                                                                                                                                |         r2 = *(0x14ec0);
    0x00014e42 ldr r3, [pc, 0x80]                                                                                                                                                                                                                                                |         r3 = *(0x14ec6);
    0x00014e44 ldr r2, [r1, r2]                                                                                                                                                                                                                                                  |         r2 = *(0x29cf8);
    0x00014e46 ldr r1, [r1, r3]                                                                                                                                                                                                                                                  |         r1 = *(0x29cf8);
    0x00014e48 blx 0xed0c                                                                                                                                                                                                                                                        |         fcn_0000ed0c ();
    0x00014e4c mov r0, r4                                                                                                                                                                                                                                                        |         r0 = r4;
    0x00014e4e blx 0xe878                                                                                                                                                                                                                                                        |         fcn_0000e878 ();
    0x00014e52 blx 0xea54                                                                                                                                                                                                                                                        |         fcn_0000ea54 ();
    0x00014e56 mov r0, r8                                                                                                                                                                                                                                                        |         r0 = r8;
    0x00014e58 bl 0x1842c                                                                                                                                                                                                                                                        |         fcn_0001842c (r0);
                                                                                                                                                                                                                                                                                 | label_15:
    0x00014e5c ldr r0, [r5, 4]                                                                                                                                                                                                                                                   |         r0 = *((r5 + 4));
    0x00014e5e cmp r0, 0                                                                                                                                                                                                                                                         |         
    0x00014e60 beq 0x14e28                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r0 == 0);
    0x00014e62 bl 0x18a84                                                                                                                                                                                                                                                        |     fcn_00018a84 (r0);
    0x00014e66 b 0x14e28                                                                                                                                                                                                                                                         |     goto label_14;
                                                                                                                                                                                                                                                                                 | label_36:
    0x00014e86 mov r0, sb                                                                                                                                                                                                                                                        |     r0 = sb;
    0x00014e88 bl 0x1842c                                                                                                                                                                                                                                                        |     fcn_0001842c (r0);
    0x00014e8c b 0x14e5c                                                                                                                                                                                                                                                         |     goto label_15;
                                                                                                                                                                                                                                                                                 | }
    ; assembly                                                                                                                   | /* r2dec pseudo code output */
                                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x14518 */
                                                                                                                                 | #include <stdint.h>
                                                                                                                                 |  
    ; (fcn) method.mqtt::async_client.unsubscribe_std::shared_ptr_mqtt::string_collection_const___mqtt::properties_const_ ()     | void method_mqtt::async_client_unsubscribe_std::shared_ptr_mqtt::string_collection_const_mqtt::properties_const_ (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                 |     int16_t var_0h;
                                                                                                                                 |     int16_t var_4h;
                                                                                                                                 |     int16_t var_8h;
                                                                                                                                 |     int16_t var_ch;
                                                                                                                                 |     int16_t var_10h;
                                                                                                                                 |     int16_t var_24h;
                                                                                                                                 |     int16_t var_28h;
                                                                                                                                 |     int16_t var_2ch;
                                                                                                                                 |     int16_t var_74h;
                                                                                                                                 |     int16_t var_78h;
                                                                                                                                 |     int16_t var_88h;
                                                                                                                                 |     int16_t var_94h;
                                                                                                                                 |     int16_t var_b4h;
                                                                                                                                 |     int16_t var_dch;
                                                                                                                                 |     int16_t var_e0h;
                                                                                                                                 |     int16_t var_f0h;
                                                                                                                                 |     int16_t var_fch;
                                                                                                                                 |     r0 = arg1;
                                                                                                                                 |     r1 = arg2;
                                                                                                                                 |     r2 = arg3;
                                                                                                                                 |     r3 = arg4;
                                                                                                                                 |     /* mqtt::async_client::unsubscribe(std::shared_ptr<qtt::string_collection const>, mqtt::properties const&) */
    0x00014518 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                       |     
    0x0001451c sub sp, 0x104                                                                                                     |     
    0x0001451e mov r6, r2                                                                                                        |     r6 = r2;
    0x00014520 str r2, [sp, 4]                                                                                                   |     var_4h = r2;
    0x00014522 mov r4, r1                                                                                                        |     r4 = r1;
    0x00014524 mov r5, r0                                                                                                        |     r5 = r0;
    0x00014526 ldr.w r2, [pc, 0x468]                                                                                             |     
    0x0001452a str r3, [sp, 8]                                                                                                   |     var_8h = r3;
    0x0001452c ldr.w r3, [pc, 0x464]                                                                                             |     r3 = *(0x14994);
    0x00014530 add r2, pc                                                                                                        |     r2 = 0x28ec6;
    0x00014532 ldr.w sl, [r6]                                                                                                    |     sl = *(r6);
    0x00014536 ldr.w r8, [pc, 0x460]                                                                                             |     
    0x0001453a ldr r3, [r2, r3]                                                                                                  |     
    0x0001453c ldr.w sb, [r6, 4]                                                                                                 |     sb = *((r6 + 4));
    0x00014540 add r8, pc                                                                                                        |     r8 = 0x28ede;
    0x00014542 ldr r3, [r3]                                                                                                      |     r3 = *(0x28ec6);
    0x00014544 str r3, [sp, 0xfc]                                                                                                |     var_fch = r3;
    0x00014546 mov.w r3, 0                                                                                                       |     r3 = 0;
    0x0001454a ldr r3, [r1]                                                                                                      |     r3 = *(r1);
    0x0001454c ldr r3, [r3, -0x94]                                                                                               |     r3 = *((r3 - 0x94));
    0x00014550 add.w fp, r1, r3                                                                                                  |     
    0x00014554 ldrd r2, r3, [sl]                                                                                                 |     __asm ("ldrd r2, r3, [sl]");
    0x00014558 subs r3, r3, r2                                                                                                   |     r3 -= r2;
    0x0001455a movw r2, 0xaaab                                                                                                   |     
    0x0001455e asrs r3, r3, 3                                                                                                    |     r3 >>= 3;
                                                                                                                                 |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00014560 movt r2, 0xaaaa                                                                                                   |     r2 = 0xaaaaaaab;
    0x00014564 mul r3, r2, r3                                                                                                    |     r3 = r2 * r3;
    0x00014568 str r3, [sp]                                                                                                      |     *(sp) = r3;
    0x0001456a cmp.w sb, 0                                                                                                       |     
                                                                                                                                 |     if (sb != 0) {
    0x0001456e beq 0x1458a                                                                                                       |         
    0x00014570 ldr.w r3, [pc, 0x428]                                                                                             |         r3 = *(0x1499c);
    0x00014574 ldr.w r6, [r8, r3]                                                                                                |         r6 = *((r8 + r3));
    0x00014578 ldrb r3, [r6]                                                                                                     |         r3 = *(r6);
    0x0001457a cmp r3, 0                                                                                                         |         
                                                                                                                                 |         if (r3 == 0) {
    0x0001457c beq.w 0x14742                                                                                                     |             goto label_14;
                                                                                                                                 |         }
    0x00014580 ldr.w r3, [sb, 4]                                                                                                 |         r3 = *((sb + 4));
    0x00014584 adds r3, 1                                                                                                        |         r3++;
    0x00014586 str.w r3, [sb, 4]                                                                                                 |         __asm ("str.w r3, [sb, 4]");
                                                                                                                                 |     }
                                                                                                                                 | label_0:
    0x0001458a movs r3, 0                                                                                                        |     r3 = 0;
    0x0001458c movs r0, 0xb0                                                                                                     |     r0 = 0xb0;
    0x0001458e str r3, [r5]                                                                                                      |     *(r5) = r3;
    0x00014590 blx 0xe5ec                                                                                                        |     fcn_0000e5ec ();
    0x00014594 ldr.w r3, [pc, 0x408]                                                                                             |     r3 = *(0x149a0);
    0x00014598 movs r2, 1                                                                                                        |     r2 = 1;
    0x0001459a strd r2, r2, [r0, 4]                                                                                              |     __asm ("strd r2, r2, [r0, 4]");
    0x0001459e mov r7, r0                                                                                                        |     r7 = r0;
    0x000145a0 ldr.w r3, [r8, r3]                                                                                                |     r3 = *((r8 + r3));
    0x000145a4 strd sl, sb, [sp, 0x24]                                                                                           |     __asm ("strd sl, sb, [var_28h]");
    0x000145a8 mov sl, r0                                                                                                        |     sl = r0;
    0x000145aa adds r3, 8                                                                                                        |     r3 += 8;
    0x000145ac str r3, [sl], 0x10                                                                                                |     *(sl) = r3;
                                                                                                                                 |     sl += 0x10;
    0x000145b0 cmp.w sb, 0                                                                                                       |     
                                                                                                                                 |     if (sb != 0) {
    0x000145b4 beq 0x145ce                                                                                                       |         
    0x000145b6 ldr r3, [pc, 0x3e4]                                                                                               |         r3 = *(0x1499e);
    0x000145b8 ldr.w r6, [r8, r3]                                                                                                |         r6 = *((r8 + r3));
    0x000145bc ldrb r3, [r6]                                                                                                     |         r3 = *(r6);
    0x000145be cmp r3, 0                                                                                                         |         
                                                                                                                                 |         if (r3 == 0) {
    0x000145c0 beq.w 0x14784                                                                                                     |             goto label_15;
                                                                                                                                 |         }
    0x000145c4 ldr.w r3, [sb, 4]                                                                                                 |         r3 = *((sb + 4));
    0x000145c8 add r3, r2                                                                                                        |         r3 += r2;
    0x000145ca str.w r3, [sb, 4]                                                                                                 |         __asm ("str.w r3, [sb, 4]");
                                                                                                                                 |     }
                                                                                                                                 | label_2:
    0x000145ce mov r2, fp                                                                                                        |     r2 = fp;
    0x000145d0 add.w fp, sp, 0x24                                                                                                |     
    0x000145d4 mov r3, fp                                                                                                        |     r3 = fp;
    0x000145d6 movs r1, 3                                                                                                        |     r1 = 3;
    0x000145d8 mov r0, sl                                                                                                        |     r0 = sl;
    0x000145da blx 0xeca0                                                                                                        |     fcn_0000eca0 ();
    0x000145de ldr r0, [sp, 0x28]                                                                                                |     r0 = var_28h;
    0x000145e0 ldr r3, [pc, 0x3b8]                                                                                               |     r3 = *(0x1499c);
    0x000145e2 ldr.w r6, [r8, r3]                                                                                                |     r6 = *((r8 + r3));
                                                                                                                                 |     if (r0 != 0) {
    0x000145e6 cbz r0, 0x145fc                                                                                                   |         
    0x000145e8 ldrb r3, [r6]                                                                                                     |         r3 = *(r6);
    0x000145ea cmp r3, 0                                                                                                         |         
                                                                                                                                 |         if (r3 == 0) {
    0x000145ec beq.w 0x147f2                                                                                                     |             goto label_16;
                                                                                                                                 |         }
    0x000145f0 ldr r3, [r0, 4]                                                                                                   |         r3 = *((r0 + 4));
    0x000145f2 subs r2, r3, 1                                                                                                    |         r2 = r3 - 1;
    0x000145f4 str r2, [r0, 4]                                                                                                   |         *((r0 + 4)) = r2;
                                                                                                                                 | label_5:
    0x000145f6 cmp r3, 1                                                                                                         |         
                                                                                                                                 |         if (r3 == 1) {
    0x000145f8 beq.w 0x1475e                                                                                                     |             goto label_17;
                                                                                                                                 |         }
                                                                                                                                 |     }
                                                                                                                                 | label_1:
    0x000145fc strd sl, r7, [r5]                                                                                                 |     __asm ("strd sl, r7, [r5]");
    0x00014600 cmp.w sb, 0                                                                                                       |     
                                                                                                                                 |     if (sb == 0) {
    0x00014604 beq.w 0x14724                                                                                                     |         goto label_18;
                                                                                                                                 |     }
    0x00014608 ldrb r3, [r6]                                                                                                     |     r3 = *(r6);
    0x0001460a cmp r3, 0                                                                                                         |     
                                                                                                                                 |     if (r3 == 0) {
    0x0001460c beq.w 0x1485e                                                                                                     |         goto label_19;
                                                                                                                                 |     }
    0x00014610 ldr.w r3, [sb, 4]                                                                                                 |     r3 = *((sb + 4));
    0x00014614 subs r2, r3, 1                                                                                                    |     r2 = r3 - 1;
    0x00014616 str.w r2, [sb, 4]                                                                                                 |     __asm ("str.w r2, [sb, 4]");
                                                                                                                                 | label_9:
    0x0001461a cmp r3, 1                                                                                                         |     
                                                                                                                                 |     if (r3 == 1) {
    0x0001461c beq.w 0x147c6                                                                                                     |         goto label_20;
                                                                                                                                 |     }
                                                                                                                                 | label_4:
    0x00014620 ldrd r2, r7, [r5]                                                                                                 |     __asm ("ldrd r2, r7, [r5]");
    0x00014624 ldr r3, [sp]                                                                                                      |     r3 = *(sp);
    0x00014626 str.w r3, [r2, 0x8c]                                                                                              |     __asm ("str.w r3, [r2, 0x8c]");
    0x0001462a ldr r3, [r4]                                                                                                      |     r3 = *(r4);
    0x0001462c ldr.w r3, [r3, 0x8c]                                                                                              |     r3 = *((r3 + 0x8c));
    0x00014630 strd r2, r7, [sp, 0x24]                                                                                           |     __asm ("strd r2, r7, [var_28h]");
    0x00014634 cmp r7, 0                                                                                                         |     
    0x00014636 bne 0x14734                                                                                                       |     
                                                                                                                                 |     while (1) {
                                                                                                                                 | label_6:
    0x00014638 mov r1, fp                                                                                                        |         r1 = fp;
    0x0001463a mov r0, r4                                                                                                        |         r0 = r4;
    0x0001463c blx r3                                                                                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x0001463e ldr r7, [sp, 0x28]                                                                                                |         r7 = var_28h;
                                                                                                                                 |         if (r7 != 0) {
    0x00014640 cbz r7, 0x14656                                                                                                   |             
    0x00014642 ldrb r3, [r6]                                                                                                     |             r3 = *(r6);
    0x00014644 cmp r3, 0                                                                                                         |             
                                                                                                                                 |             if (r3 == 0) {
    0x00014646 beq.w 0x14844                                                                                                     |                 goto label_21;
                                                                                                                                 |             }
    0x0001464a ldr r3, [r7, 4]                                                                                                   |             r3 = *((r7 + 4));
    0x0001464c subs r2, r3, 1                                                                                                    |             r2 = r3 - 1;
    0x0001464e str r2, [r7, 4]                                                                                                   |             *((r7 + 4)) = r2;
                                                                                                                                 | label_8:
    0x00014650 cmp r3, 1                                                                                                         |             
                                                                                                                                 |             if (r3 == 1) {
    0x00014652 beq.w 0x147a0                                                                                                     |                 goto label_22;
                                                                                                                                 |             }
                                                                                                                                 |         }
                                                                                                                                 | label_3:
    0x00014656 add.w sb, sp, 0x94                                                                                                |         sb += var_94h;
    0x0001465a ldr r1, [r4, 0x50]                                                                                                |         r1 = *((r4 + 0x50));
    0x0001465c mov r0, sb                                                                                                        |         r0 = sb;
    0x0001465e blx 0xece8                                                                                                        |         fcn_0000ece8 ();
    0x00014662 mov r1, r5                                                                                                        |         r1 = r5;
    0x00014664 mov r0, sb                                                                                                        |         r0 = sb;
    0x00014666 blx 0xeeb0                                                                                                        |         fcn_0000eeb0 ();
    0x0001466a add r7, sp, 0xe0                                                                                                  |         r7 += var_e0h;
    0x0001466c mov r0, r7                                                                                                        |         r0 = r7;
    0x0001466e blx 0xedb4                                                                                                        |         fcn_0000edb4 ();
    0x00014672 add r3, sp, 0x10                                                                                                  |         r3 += var_10h;
    0x00014674 ldr r1, [sp, 8]                                                                                                   |         r1 = var_8h;
    0x00014676 mov r0, r3                                                                                                        |         r0 = r3;
    0x00014678 str r3, [sp, 8]                                                                                                   |         var_8h = r3;
    0x0001467a blx 0xeb24                                                                                                        |         fcn_0000eb24 ();
    0x0001467e ldr r3, [sp, 8]                                                                                                   |         r3 = var_8h;
    0x00014680 add.w sl, sp, 0x2c                                                                                                |         sl += var_2ch;
    0x00014684 add.w ip, sp, 0xb4                                                                                                |         
    0x00014688 ldm r3, {r0, r1, r2, r3}                                                                                          |         r0 = *(r3);
                                                                                                                                 |         r1 = *((r3 + 4));
                                                                                                                                 |         r2 = *((r3 + 8));
                                                                                                                                 |         r3 = *((r3 + 12));
    0x0001468a stm.w r7, {r0, r1, r2, r3}                                                                                        |         *(r7) = r0;
                                                                                                                                 |         *((r7 + 4)) = r1;
                                                                                                                                 |         *((r7 + 8)) = r2;
                                                                                                                                 |         *((r7 + 12)) = r3;
    0x0001468e stm.w ip, {r0, r1, r2, r3}                                                                                        |         *(ip) = r0;
                                                                                                                                 |         *((ip + 4)) = r1;
                                                                                                                                 |         *((ip + 8)) = r2;
                                                                                                                                 |         *((ip + 12)) = r3;
    0x00014692 mov r1, sb                                                                                                        |         r1 = sb;
    0x00014694 mov r0, sl                                                                                                        |         r0 = sl;
    0x00014696 blx 0xed60                                                                                                        |         fcn_0000ed60 ();
    0x0001469a ldr r0, [sp, 0xf0]                                                                                                |         r0 = var_f0h;
                                                                                                                                 |         if (r0 != 0) {
    0x0001469c cbz r0, 0x146a2                                                                                                   |             
    0x0001469e blx 0xe9a4                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                 |         }
    0x000146a2 mov r0, r7                                                                                                        |         r0 = r7;
    0x000146a4 blx 0xedb4                                                                                                        |         fcn_0000edb4 ();
    0x000146a8 ldr r0, [sp, 0xdc]                                                                                                |         r0 = var_dch;
                                                                                                                                 |         if (r0 != 0) {
    0x000146aa cbz r0, 0x146c4                                                                                                   |             
    0x000146ac ldrb r3, [r6]                                                                                                     |             r3 = *(r6);
    0x000146ae cmp r3, 0                                                                                                         |             
                                                                                                                                 |             if (r3 == 0) {
    0x000146b0 beq.w 0x14828                                                                                                     |                 goto label_23;
                                                                                                                                 |             }
    0x000146b4 ldr r3, [r0, 8]                                                                                                   |             r3 = *((r0 + 8));
    0x000146b6 subs r2, r3, 1                                                                                                    |             r2 = r3 - 1;
    0x000146b8 str r2, [r0, 8]                                                                                                   |             *((r0 + 8)) = r2;
                                                                                                                                 | label_7:
    0x000146ba cmp r3, 1                                                                                                         |             
                                                                                                                                 |             if (r3 != 1) {
    0x000146bc bne 0x146c4                                                                                                       |                 goto label_24;
                                                                                                                                 |             }
    0x000146be ldr r3, [r0]                                                                                                      |             r3 = *(r0);
    0x000146c0 ldr r3, [r3, 0xc]                                                                                                 |             r3 = *((r3 + 0xc));
    0x000146c2 blx r3                                                                                                            |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                 |         }
                                                                                                                                 | label_24:
    0x000146c4 ldr r3, [sp, 4]                                                                                                   |         r3 = var_4h;
    0x000146c6 ldr r1, [sp]                                                                                                      |         r1 = *(sp);
    0x000146c8 ldr r0, [r4, 0x1c]                                                                                                |         r0 = *((r4 + 0x1c));
    0x000146ca ldr r3, [r3]                                                                                                      |         r3 = *(r3);
    0x000146cc ldr r2, [r3, 0xc]                                                                                                 |         r2 = *((r3 + 0xc));
    0x000146ce mov r3, sl                                                                                                        |         r3 = sl;
    0x000146d0 blx 0xe74c                                                                                                        |         r0 = fcn_0000e74c ();
    0x000146d4 mov r7, r0                                                                                                        |         r7 = r0;
    0x000146d6 cmp r0, 0                                                                                                         |         
                                                                                                                                 |         if (r0 != 0) {
    0x000146d8 bne.w 0x148f0                                                                                                     |             goto label_25;
                                                                                                                                 |         }
    0x000146dc ldr r0, [sp, 0x88]                                                                                                |         r0 = var_88h;
                                                                                                                                 |         if (r0 != 0) {
    0x000146de cbz r0, 0x146e4                                                                                                   |             
    0x000146e0 blx 0xe9a4                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                 |         }
    0x000146e4 add r0, sp, 0x78                                                                                                  |         r0 += var_78h;
    0x000146e6 blx 0xedb4                                                                                                        |         fcn_0000edb4 ();
    0x000146ea ldr r0, [sp, 0x74]                                                                                                |         r0 = var_74h;
                                                                                                                                 |         if (r0 != 0) {
    0x000146ec cbz r0, 0x14706                                                                                                   |             
    0x000146ee ldrb r3, [r6]                                                                                                     |             r3 = *(r6);
    0x000146f0 cmp r3, 0                                                                                                         |             
                                                                                                                                 |             if (r3 == 0) {
    0x000146f2 beq.w 0x1487a                                                                                                     |                 goto label_26;
                                                                                                                                 |             }
    0x000146f6 ldr r3, [r0, 8]                                                                                                   |             r3 = *((r0 + 8));
    0x000146f8 subs r2, r3, 1                                                                                                    |             r2 = r3 - 1;
    0x000146fa str r2, [r0, 8]                                                                                                   |             *((r0 + 8)) = r2;
                                                                                                                                 | label_10:
    0x000146fc cmp r3, 1                                                                                                         |             
                                                                                                                                 |             if (r3 != 1) {
    0x000146fe bne 0x14706                                                                                                       |                 goto label_27;
                                                                                                                                 |             }
    0x00014700 ldr r3, [r0]                                                                                                      |             r3 = *(r0);
    0x00014702 ldr r3, [r3, 0xc]                                                                                                 |             r3 = *((r3 + 0xc));
    0x00014704 blx r3                                                                                                            |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                 |         }
                                                                                                                                 | label_27:
    0x00014706 ldr r2, [pc, 0x29c]                                                                                               |         
    0x00014708 ldr r3, [pc, 0x288]                                                                                               |         r3 = *(0x14994);
    0x0001470a add r2, pc                                                                                                        |         r2 = 0x290b4;
    0x0001470c ldr r3, [r2, r3]                                                                                                  |         r3 = *(0x290b4);
    0x0001470e ldr r2, [r3]                                                                                                      |         r2 = *(0x290b4);
    0x00014710 ldr r3, [sp, 0xfc]                                                                                                |         r3 = var_fch;
    0x00014712 eors r2, r3                                                                                                       |         r2 ^= r3;
    0x00014714 mov.w r3, 0                                                                                                       |         r3 = 0;
    0x00014716 lsls r0, r0, 0xc                                                                                                  |         r0 <<= 0xc;
                                                                                                                                 |         if (r0 != r0) {
    0x00014718 bne.w 0x148ec                                                                                                     |             goto label_28;
                                                                                                                                 |         }
    0x0001471c mov r0, r5                                                                                                        |         r0 = r5;
    0x0001471e add sp, 0x104                                                                                                     |         
    0x00014720 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                        |         
                                                                                                                                 | label_18:
    0x00014724 ldr r3, [sp]                                                                                                      |         r3 = *(sp);
    0x00014726 str.w r3, [r7, 0x9c]                                                                                              |         __asm ("str.w r3, [r7, 0x9c]");
    0x0001472a ldr r3, [r4]                                                                                                      |         r3 = *(r4);
    0x0001472c ldr.w r3, [r3, 0x8c]                                                                                              |         r3 = *((r3 + 0x8c));
    0x00014730 strd sl, r7, [sp, 0x24]                                                                                           |         __asm ("strd sl, r7, [var_28h]");
    0x00014734 ldrb r2, [r6]                                                                                                     |         r2 = *(r6);
    0x00014736 cmp r2, 0                                                                                                         |         
                                                                                                                                 |         if (r2 == 0) {
    0x00014738 beq 0x1480e                                                                                                       |             goto label_29;
                                                                                                                                 |         }
    0x0001473a ldr r2, [r7, 4]                                                                                                   |         r2 = *((r7 + 4));
    0x0001473c adds r2, 1                                                                                                        |         r2++;
    0x0001473e str r2, [r7, 4]                                                                                                   |         *((r7 + 4)) = r2;
    0x00014740 b 0x14638                                                                                                         |         
                                                                                                                                 |     }
                                                                                                                                 | label_14:
    0x00014742 add.w r3, sb, 4                                                                                                   |     r3 = sb + 4;
    0x00014746 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x0001474a ldrex r1, [r3]                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001474e adds r1, 1                                                                                                        |         r1++;
    0x00014750 strex r2, r1, [r3]                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x00014754 cmp r2, 0                                                                                                         |         
    0x00014756 bne 0x1474a                                                                                                       |         
                                                                                                                                 |     } while (r2 != 0);
    0x00014758 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x0001475c b 0x1458a                                                                                                         |     goto label_0;
                                                                                                                                 | label_17:
    0x0001475e ldr r3, [r0]                                                                                                      |     r3 = *(r0);
    0x00014760 str r0, [sp, 0xc]                                                                                                 |     var_ch = r0;
    0x00014762 ldr r3, [r3, 8]                                                                                                   |     r3 = *((r3 + 8));
    0x00014764 blx r3                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00014766 ldrb r3, [r6]                                                                                                     |     r3 = *(r6);
    0x00014768 ldr r0, [sp, 0xc]                                                                                                 |     r0 = var_ch;
    0x0001476a cmp r3, 0                                                                                                         |     
                                                                                                                                 |     if (r3 == 0) {
    0x0001476c beq.w 0x14896                                                                                                     |         goto label_30;
                                                                                                                                 |     }
    0x00014770 ldr r3, [r0, 8]                                                                                                   |     r3 = *((r0 + 8));
    0x00014772 subs r2, r3, 1                                                                                                    |     r2 = r3 - 1;
    0x00014774 str r2, [r0, 8]                                                                                                   |     *((r0 + 8)) = r2;
                                                                                                                                 | label_11:
    0x00014776 cmp r3, 1                                                                                                         |     
                                                                                                                                 |     if (r3 != 1) {
    0x00014778 bne.w 0x145fc                                                                                                     |         goto label_1;
                                                                                                                                 |     }
    0x0001477c ldr r3, [r0]                                                                                                      |     r3 = *(r0);
    0x0001477e ldr r3, [r3, 0xc]                                                                                                 |     r3 = *((r3 + 0xc));
    0x00014780 blx r3                                                                                                            |     uint32_t (*r3)(uint32_t) (r3);
    0x00014782 b 0x145fc                                                                                                         |     goto label_1;
                                                                                                                                 | label_15:
    0x00014784 add.w r3, sb, 4                                                                                                   |     r3 = sb + 4;
    0x00014788 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x0001478c ldrex r1, [r3]                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x00014790 adds r1, 1                                                                                                        |         r1++;
    0x00014792 strex r2, r1, [r3]                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x00014796 cmp r2, 0                                                                                                         |         
    0x00014798 bne 0x1478c                                                                                                       |         
                                                                                                                                 |     } while (r2 != 0);
    0x0001479a dmb ish                                                                                                           |     __asm ("dmb ish");
    0x0001479e b 0x145ce                                                                                                         |     goto label_2;
                                                                                                                                 | label_22:
    0x000147a0 ldr r3, [r7]                                                                                                      |     r3 = *(r7);
    0x000147a2 mov r0, r7                                                                                                        |     r0 = r7;
    0x000147a4 ldr r3, [r3, 8]                                                                                                   |     r3 = *((r3 + 8));
    0x000147a6 blx r3                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000147a8 ldrb r3, [r6]                                                                                                     |     r3 = *(r6);
    0x000147aa cmp r3, 0                                                                                                         |     
                                                                                                                                 |     if (r3 == 0) {
    0x000147ac beq.w 0x148b4                                                                                                     |         goto label_31;
                                                                                                                                 |     }
    0x000147b0 ldr r3, [r7, 8]                                                                                                   |     r3 = *((r7 + 8));
    0x000147b2 subs r2, r3, 1                                                                                                    |     r2 = r3 - 1;
    0x000147b4 str r2, [r7, 8]                                                                                                   |     *((r7 + 8)) = r2;
                                                                                                                                 | label_12:
    0x000147b6 cmp r3, 1                                                                                                         |     
                                                                                                                                 |     if (r3 != 1) {
    0x000147b8 bne.w 0x14656                                                                                                     |         goto label_3;
                                                                                                                                 |     }
    0x000147bc ldr r3, [r7]                                                                                                      |     r3 = *(r7);
    0x000147be mov r0, r7                                                                                                        |     r0 = r7;
    0x000147c0 ldr r3, [r3, 0xc]                                                                                                 |     r3 = *((r3 + 0xc));
    0x000147c2 blx r3                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000147c4 b 0x14656                                                                                                         |     goto label_3;
                                                                                                                                 | label_20:
    0x000147c6 ldr.w r3, [sb]                                                                                                    |     r3 = *(sb);
    0x000147ca mov r0, sb                                                                                                        |     r0 = sb;
    0x000147cc ldr r3, [r3, 8]                                                                                                   |     r3 = *((r3 + 8));
    0x000147ce blx r3                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000147d0 ldrb r3, [r6]                                                                                                     |     r3 = *(r6);
    0x000147d2 cmp r3, 0                                                                                                         |     
                                                                                                                                 |     if (r3 == 0) {
    0x000147d4 beq 0x148d0                                                                                                       |         goto label_32;
                                                                                                                                 |     }
    0x000147d6 ldr.w r3, [sb, 8]                                                                                                 |     r3 = *((sb + 8));
    0x000147da subs r2, r3, 1                                                                                                    |     r2 = r3 - 1;
    0x000147dc str.w r2, [sb, 8]                                                                                                 |     __asm ("str.w r2, [sb, 8]");
                                                                                                                                 | label_13:
    0x000147e0 cmp r3, 1                                                                                                         |     
                                                                                                                                 |     if (r3 != 1) {
    0x000147e2 bne.w 0x14620                                                                                                     |         goto label_4;
                                                                                                                                 |     }
    0x000147e6 ldr.w r3, [sb]                                                                                                    |     r3 = *(sb);
    0x000147ea mov r0, sb                                                                                                        |     r0 = sb;
    0x000147ec ldr r3, [r3, 0xc]                                                                                                 |     r3 = *((r3 + 0xc));
    0x000147ee blx r3                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000147f0 b 0x14620                                                                                                         |     goto label_4;
                                                                                                                                 | label_16:
    0x000147f2 adds r2, r0, 4                                                                                                    |     r2 = r0 + 4;
    0x000147f4 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x000147f8 ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x000147fc subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x000147fe strex ip, r1, [r2]                                                                                                |         __asm ("strex ip, r1, [r2]");
    0x00014802 cmp.w ip, 0                                                                                                       |         
    0x00014806 bne 0x147f8                                                                                                       |         
                                                                                                                                 |     } while (ip != 0);
    0x00014808 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x0001480c b 0x145f6                                                                                                         |     goto label_5;
                                                                                                                                 | label_29:
    0x0001480e adds r7, 4                                                                                                        |     r7 += 4;
    0x00014810 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x00014814 ldrex r2, [r7]                                                                                                    |         __asm ("ldrex r2, [r7]");
    0x00014818 adds r2, 1                                                                                                        |         r2++;
    0x0001481a strex r1, r2, [r7]                                                                                                |         __asm ("strex r1, r2, [r7]");
    0x0001481e cmp r1, 0                                                                                                         |         
    0x00014820 bne 0x14814                                                                                                       |         
                                                                                                                                 |     } while (r1 != 0);
    0x00014822 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x00014826 b 0x14638                                                                                                         |     goto label_6;
                                                                                                                                 | label_23:
    0x00014828 add.w r2, r0, 8                                                                                                   |     r2 = r0 + 8;
    0x0001482c dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x00014830 ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014834 subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x00014836 strex r7, r1, [r2]                                                                                                |         __asm ("strex r7, r1, [r2]");
    0x0001483a cmp r7, 0                                                                                                         |         
    0x0001483c bne 0x14830                                                                                                       |         
                                                                                                                                 |     } while (r7 != 0);
    0x0001483e dmb ish                                                                                                           |     __asm ("dmb ish");
    0x00014842 b 0x146ba                                                                                                         |     goto label_7;
                                                                                                                                 | label_21:
    0x00014844 adds r2, r7, 4                                                                                                    |     r2 = r7 + 4;
    0x00014846 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x0001484a ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001484e subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x00014850 strex r0, r1, [r2]                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00014854 cmp r0, 0                                                                                                         |         
    0x00014856 bne 0x1484a                                                                                                       |         
                                                                                                                                 |     } while (r0 != 0);
    0x00014858 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x0001485c b 0x14650                                                                                                         |     goto label_8;
                                                                                                                                 | label_19:
    0x0001485e add.w r2, sb, 4                                                                                                   |     r2 = sb + 4;
    0x00014862 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x00014866 ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001486a subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x0001486c strex r0, r1, [r2]                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00014870 cmp r0, 0                                                                                                         |         
    0x00014872 bne 0x14866                                                                                                       |         
                                                                                                                                 |     } while (r0 != 0);
    0x00014874 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x00014878 b 0x1461a                                                                                                         |     goto label_9;
                                                                                                                                 | label_26:
    0x0001487a add.w r2, r0, 8                                                                                                   |     r2 = r0 + 8;
    0x0001487e dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x00014882 ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00014886 subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x00014888 strex r4, r1, [r2]                                                                                                |         __asm ("strex r4, r1, [r2]");
    0x0001488c cmp r4, 0                                                                                                         |         
    0x0001488e bne 0x14882                                                                                                       |         
                                                                                                                                 |     } while (r4 != 0);
    0x00014890 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x00014894 b 0x146fc                                                                                                         |     goto label_10;
                                                                                                                                 | label_30:
    0x00014896 add.w r2, r0, 8                                                                                                   |     r2 = r0 + 8;
    0x0001489a dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x0001489e ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x000148a2 subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x000148a4 strex ip, r1, [r2]                                                                                                |         __asm ("strex ip, r1, [r2]");
    0x000148a8 cmp.w ip, 0                                                                                                       |         
    0x000148ac bne 0x1489e                                                                                                       |         
                                                                                                                                 |     } while (ip != 0);
    0x000148ae dmb ish                                                                                                           |     __asm ("dmb ish");
    0x000148b2 b 0x14776                                                                                                         |     goto label_11;
                                                                                                                                 | label_31:
    0x000148b4 add.w r2, r7, 8                                                                                                   |     r2 = r7 + 8;
    0x000148b8 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x000148bc ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x000148c0 subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x000148c2 strex r0, r1, [r2]                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x000148c6 cmp r0, 0                                                                                                         |         
    0x000148c8 bne 0x148bc                                                                                                       |         
                                                                                                                                 |     } while (r0 != 0);
    0x000148ca dmb ish                                                                                                           |     __asm ("dmb ish");
    0x000148ce b 0x147b6                                                                                                         |     goto label_12;
                                                                                                                                 | label_32:
    0x000148d0 add.w r2, sb, 8                                                                                                   |     r2 = sb + 8;
    0x000148d4 dmb ish                                                                                                           |     __asm ("dmb ish");
                                                                                                                                 |     do {
    0x000148d8 ldrex r3, [r2]                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x000148dc subs r1, r3, 1                                                                                                    |         r1 = r3 - 1;
    0x000148de strex r0, r1, [r2]                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x000148e2 cmp r0, 0                                                                                                         |         
    0x000148e4 bne 0x148d8                                                                                                       |         
                                                                                                                                 |     } while (r0 != 0);
    0x000148e6 dmb ish                                                                                                           |     __asm ("dmb ish");
    0x000148ea b 0x147e0                                                                                                         |     goto label_13;
                                                                                                                                 | label_28:
    0x000148ec blx 0xea48                                                                                                        |     fcn_0000ea48 ();
                                                                                                                                 | label_25:
    0x000148f0 ldr r3, [r4]                                                                                                      |     r3 = *(r4);
    0x000148f2 ldr r0, [r5, 4]                                                                                                   |     r0 = *((r5 + 4));
    0x000148f4 ldr.w r6, [r3, 0x94]                                                                                              |     r6 = *((r3 + 0x94));
    0x000148f8 ldr r3, [r5]                                                                                                      |     r3 = *(r5);
    0x000148fa str r0, [sp, 0x28]                                                                                                |     var_28h = r0;
    0x000148fc str r3, [sp, 0x24]                                                                                                |     var_24h = r3;
                                                                                                                                 |     if (r0 != 0) {
    0x000148fe cbz r0, 0x14904                                                                                                   |         
    0x00014900 bl 0x18fb0                                                                                                        |         fcn_00018fb0 (r0);
                                                                                                                                 |     }
    0x00014904 mov r1, fp                                                                                                        |     r1 = fp;
    0x00014906 mov r0, r4                                                                                                        |     r0 = r4;
    0x00014908 blx r6                                                                                                            |     uint32_t (*r6)(uint32_t, uint32_t) (r0, r1);
    0x0001490a ldr r0, [sp, 0x28]                                                                                                |     r0 = var_28h;
                                                                                                                                 |     if (r0 != 0) {
    0x0001490c cbz r0, 0x14912                                                                                                   |         
    0x0001490e bl 0x18a84                                                                                                        |         fcn_00018a84 (r0);
                                                                                                                                 |     }
    0x00014912 movs r0, 0x28                                                                                                     |     r0 = 0x28;
    0x00014914 blx 0xe764                                                                                                        |     fcn_0000e764 ();
    0x00014918 mov r1, r7                                                                                                        |     r1 = r7;
    0x0001491a mov r4, r0                                                                                                        |     r4 = r0;
    0x0001491c bl 0x17aa8                                                                                                        |     fcn_00017aa8 (r0, r1);
    0x00014920 ldr r3, [pc, 0x84]                                                                                                |     r3 = *(0x149a8);
    0x00014922 mov r0, r4                                                                                                        |     r0 = r4;
    0x00014924 ldr.w r2, [r8, r3]                                                                                                |     r2 = *((r8 + r3));
    0x00014928 ldr r3, [pc, 0x80]                                                                                                |     r3 = *(0x149ac);
    0x0001492a ldr.w r1, [r8, r3]                                                                                                |     r1 = *((r8 + r3));
    0x0001492e blx 0xed0c                                                                                                        |     fcn_0000ed0c ();
    0x00014932 ldr r0, [sp, 0x28]                                                                                                |     r0 = var_28h;
                                                                                                                                 |     if (r0 != 0) {
    0x00014934 cbz r0, 0x14942                                                                                                   |         
    0x00014936 bl 0x18a84                                                                                                        |         fcn_00018a84 (r0);
    0x0001493a b 0x14942                                                                                                         |         
                                                                                                                                 |     }
    0x00014942 mov r0, sl                                                                                                        |     r0 = sl;
    0x00014944 bl 0x1842c                                                                                                        |     fcn_0001842c (r0);
                                                                                                                                 |     do {
    0x00014948 ldr r0, [r5, 4]                                                                                                   |         r0 = *((r5 + 4));
                                                                                                                                 |         if (r0 != 0) {
    0x0001494a cbz r0, 0x14950                                                                                                   |             
    0x0001494c bl 0x18a84                                                                                                        |             r0 = fcn_00018a84 (r0);
                                                                                                                                 |         }
    0x00014950 blx 0xea54                                                                                                        |         fcn_0000ea54 ();
    0x00014954 b 0x14948                                                                                                         |         
                                                                                                                                 |     } while (1);
                                                                                                                                 | }
    ; assembly                                                                                                                                                   | /* r2dec pseudo code output */
                                                                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x14ed8 */
                                                                                                                                                                 | #include <stdint.h>
                                                                                                                                                                 |  
    ; (fcn) method.mqtt::async_client.unsubscribe_std::shared_ptr_mqtt::string_collection_const___void__mqtt::iaction_listener__mqtt::properties_const_ ()       | void method_mqtt::async_client_unsubscribe_std::shared_ptr_mqtt::string_collection_const_void_mqtt::iaction_listener_mqtt::properties_const_ (int16_t arg_138h, int16_t arg_13ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                 |     int32_t var_0h;
                                                                                                                                                                 |     int32_t var_0h_2;
                                                                                                                                                                 |     int16_t var_ch;
                                                                                                                                                                 |     int16_t var_10h;
                                                                                                                                                                 |     int16_t var_14h;
                                                                                                                                                                 |     int16_t var_18h;
                                                                                                                                                                 |     int16_t var_1ch;
                                                                                                                                                                 |     int16_t var_20h;
                                                                                                                                                                 |     int16_t var_34h;
                                                                                                                                                                 |     int16_t var_38h;
                                                                                                                                                                 |     int16_t var_3ch;
                                                                                                                                                                 |     int16_t var_84h;
                                                                                                                                                                 |     int16_t var_88h;
                                                                                                                                                                 |     int16_t var_98h;
                                                                                                                                                                 |     int16_t var_a4h;
                                                                                                                                                                 |     int16_t var_c4h;
                                                                                                                                                                 |     int16_t var_ech;
                                                                                                                                                                 |     int16_t var_f0h;
                                                                                                                                                                 |     int16_t var_100h;
                                                                                                                                                                 |     int16_t var_10ch;
                                                                                                                                                                 |     r0 = arg1;
                                                                                                                                                                 |     r1 = arg2;
                                                                                                                                                                 |     r2 = arg3;
                                                                                                                                                                 |     r3 = arg4;
                                                                                                                                                                 |     /* mqtt::async_client::unsubscribe(std::shared_ptr<qtt::string_collection const>, void*, mqtt::iaction_listener&, mqtt::properties const&) */
    0x00014ed8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                                                       |     
    0x00014edc sub sp, 0x114                                                                                                                                     |     
    0x00014ede mov r7, r2                                                                                                                                        |     r7 = r2;
    0x00014ee0 str r2, [sp, 0x14]                                                                                                                                |     var_14h = r2;
    0x00014ee2 mov sl, r3                                                                                                                                        |     sl = r3;
    0x00014ee4 mov r5, r1                                                                                                                                        |     r5 = r1;
    0x00014ee6 ldr.w r2, [pc, 0x460]                                                                                                                             |     r2 = *(0x00015348);
    0x00014eea mov r6, r0                                                                                                                                        |     r6 = r0;
    0x00014eec ldr r4, [sp, 0x138]                                                                                                                               |     r4 = *(arg_138h);
    0x00014eee ldr.w r3, [pc, 0x45c]                                                                                                                             |     
    0x00014ef2 add r2, pc                                                                                                                                        |     r2 += pc;
    0x00014ef4 ldr.w r8, [r7]                                                                                                                                    |     r8 = *(r7);
    0x00014ef8 str r4, [sp, 0x18]                                                                                                                                |     var_18h = r4;
    0x00014efa ldr r3, [r2, r3]                                                                                                                                  |     r3 = *((r2 + r3));
    0x00014efc ldr r7, [r7, 4]                                                                                                                                   |     r7 = *((r7 + 4));
    0x00014efe ldr r3, [r3]                                                                                                                                      |     r3 = *(0x1534e);
    0x00014f00 str r3, [sp, 0x10c]                                                                                                                               |     var_10ch = r3;
    0x00014f02 mov.w r3, 0                                                                                                                                       |     r3 = 0;
    0x00014f06 ldr r3, [r1]                                                                                                                                      |     r3 = *(r1);
    0x00014f08 ldr r3, [r3, -0x94]                                                                                                                               |     r3 = *((r3 - 0x94));
    0x00014f0c add.w sb, r1, r3                                                                                                                                  |     sb = r1 + r3;
    0x00014f10 ldrd r2, r3, [r8]                                                                                                                                 |     __asm ("ldrd r2, r3, [r8]");
    0x00014f14 subs r3, r3, r2                                                                                                                                   |     r3 -= r2;
    0x00014f16 movw r2, 0xaaab                                                                                                                                   |     
    0x00014f1a asrs r3, r3, 3                                                                                                                                    |     r3 >>= 3;
                                                                                                                                                                 |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00014f1c movt r2, 0xaaaa                                                                                                                                   |     r2 = 0xaaaaaaab;
    0x00014f20 mul r3, r2, r3                                                                                                                                    |     r3 = r2 * r3;
    0x00014f24 ldr r2, [sp, 0x13c]                                                                                                                               |     r2 = *(arg_13ch);
    0x00014f26 str r2, [sp, 0x1c]                                                                                                                                |     var_1ch = r2;
    0x00014f28 str r3, [sp, 0x10]                                                                                                                                |     var_10h = r3;
    0x00014f2a ldr.w r3, [pc, 0x424]                                                                                                                             |     r3 = *(0x00015350);
    0x00014f2e add r3, pc                                                                                                                                        |     r3 += pc;
    0x00014f30 mov r1, r3                                                                                                                                        |     r1 = r3;
    0x00014f32 str r3, [sp, 0xc]                                                                                                                                 |     var_ch = r3;
                                                                                                                                                                 |     if (r7 != 0) {
    0x00014f34 cbz r7, 0x14f4e                                                                                                                                   |         
    0x00014f36 ldr.w r3, [pc, 0x41c]                                                                                                                             |         r3 = *(0x15356);
    0x00014f3a ldr.w fp, [r1, r3]                                                                                                                                |         fp = *((r1 + r3));
    0x00014f3e ldrb.w r3, [fp]                                                                                                                                   |         r3 = *(fp);
    0x00014f42 cmp r3, 0                                                                                                                                         |         
                                                                                                                                                                 |         if (r3 == 0) {
    0x00014f44 beq.w 0x1510a                                                                                                                                     |             goto label_14;
                                                                                                                                                                 |         }
    0x00014f48 ldr r3, [r7, 4]                                                                                                                                   |         r3 = *((r7 + 4));
    0x00014f4a adds r3, 1                                                                                                                                        |         r3++;
    0x00014f4c str r3, [r7, 4]                                                                                                                                   |         *((r7 + 4)) = r3;
                                                                                                                                                                 |     }
                                                                                                                                                                 | label_0:
    0x00014f4e movs r3, 0                                                                                                                                        |     r3 = 0;
    0x00014f50 movs r0, 0xb0                                                                                                                                     |     r0 = 0xb0;
    0x00014f52 str r3, [r6]                                                                                                                                      |     *(r6) = r3;
    0x00014f54 blx 0xe5ec                                                                                                                                        |     fcn_0000e5ec ();
    0x00014f58 movs r2, 1                                                                                                                                        |     r2 = 1;
    0x00014f5a ldr r3, [pc, 0x3fc]                                                                                                                               |     r3 = *(0x1535a);
    0x00014f5c strd r2, r2, [r0, 4]                                                                                                                              |     __asm ("strd r2, r2, [r0, 4]");
    0x00014f60 mov r4, r0                                                                                                                                        |     r4 = r0;
    0x00014f62 ldr r2, [sp, 0xc]                                                                                                                                 |     r2 = var_ch;
    0x00014f64 ldr r3, [r2, r3]                                                                                                                                  |     r3 = *((r2 + r3));
    0x00014f66 strd r8, r7, [sp, 0x34]                                                                                                                           |     __asm ("strd r8, r7, [var_34h]");
    0x00014f6a mov r8, r0                                                                                                                                        |     r8 = r0;
    0x00014f6c adds r3, 8                                                                                                                                        |     r3 += 8;
    0x00014f6e str r3, [r8], 0x10                                                                                                                                |     *(r8) = r3;
                                                                                                                                                                 |     r8 += 0x10;
                                                                                                                                                                 |     if (r7 != 0) {
    0x00014f72 cbz r7, 0x14f8a                                                                                                                                   |         
    0x00014f74 ldr r3, [pc, 0x3dc]                                                                                                                               |         r3 = *(0x15354);
    0x00014f76 ldr.w fp, [r2, r3]                                                                                                                                |         fp = *((r2 + r3));
    0x00014f7a ldrb.w r3, [fp]                                                                                                                                   |         r3 = *(fp);
    0x00014f7e cmp r3, 0                                                                                                                                         |         
                                                                                                                                                                 |         if (r3 == 0) {
    0x00014f80 beq.w 0x1514c                                                                                                                                     |             goto label_15;
                                                                                                                                                                 |         }
    0x00014f84 ldr r3, [r7, 4]                                                                                                                                   |         r3 = *((r7 + 4));
    0x00014f86 adds r3, 1                                                                                                                                        |         r3++;
    0x00014f88 str r3, [r7, 4]                                                                                                                                   |         *((r7 + 4)) = r3;
                                                                                                                                                                 |     }
                                                                                                                                                                 | label_2:
    0x00014f8a ldr r3, [sp, 0x18]                                                                                                                                |     r3 = var_18h;
    0x00014f8c mov r2, sb                                                                                                                                        |     r2 = sb;
    0x00014f8e movs r1, 3                                                                                                                                        |     r1 = 3;
    0x00014f90 mov r0, r8                                                                                                                                        |     r0 = r8;
    0x00014f92 strd sl, r3, [sp]                                                                                                                                 |     __asm ("strd sl, r3, [sp]");
    0x00014f96 add.w sl, sp, 0x34                                                                                                                                |     sl += var_34h;
    0x00014f9a mov r3, sl                                                                                                                                        |     r3 = sl;
    0x00014f9c blx 0xe5d0                                                                                                                                        |     fcn_0000e5d0 ();
    0x00014fa0 ldr r0, [sp, 0x38]                                                                                                                                |     r0 = var_38h;
    0x00014fa2 ldr r3, [pc, 0x3b0]                                                                                                                               |     r3 = *(0x15356);
    0x00014fa4 ldr r2, [sp, 0xc]                                                                                                                                 |     r2 = var_ch;
    0x00014fa6 ldr.w fp, [r2, r3]                                                                                                                                |     fp = *((r2 + r3));
                                                                                                                                                                 |     if (r0 != 0) {
    0x00014faa cbz r0, 0x14fc2                                                                                                                                   |         
    0x00014fac ldrb.w r3, [fp]                                                                                                                                   |         r3 = *(fp);
    0x00014fb0 cmp r3, 0                                                                                                                                         |         
                                                                                                                                                                 |         if (r3 == 0) {
    0x00014fb2 beq.w 0x151b2                                                                                                                                     |             goto label_16;
                                                                                                                                                                 |         }
    0x00014fb6 ldr r3, [r0, 4]                                                                                                                                   |         r3 = *((r0 + 4));
    0x00014fb8 subs r2, r3, 1                                                                                                                                    |         r2 = r3 - 1;
    0x00014fba str r2, [r0, 4]                                                                                                                                   |         *((r0 + 4)) = r2;
                                                                                                                                                                 | label_5:
    0x00014fbc cmp r3, 1                                                                                                                                         |         
                                                                                                                                                                 |         if (r3 == 1) {
    0x00014fbe beq.w 0x15124                                                                                                                                     |             goto label_17;
                                                                                                                                                                 |         }
                                                                                                                                                                 |     }
                                                                                                                                                                 | label_1:
    0x00014fc2 strd r8, r4, [r6]                                                                                                                                 |     __asm ("strd r8, r4, [r6]");
    0x00014fc6 cmp r7, 0                                                                                                                                         |     
                                                                                                                                                                 |     if (r7 == 0) {
    0x00014fc8 beq.w 0x150ea                                                                                                                                     |         goto label_18;
                                                                                                                                                                 |     }
    0x00014fcc ldrb.w r3, [fp]                                                                                                                                   |     r3 = *(fp);
    0x00014fd0 cmp r3, 0                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 == 0) {
    0x00014fd2 beq.w 0x1521e                                                                                                                                     |         goto label_19;
                                                                                                                                                                 |     }
    0x00014fd6 ldr r3, [r7, 4]                                                                                                                                   |     r3 = *((r7 + 4));
    0x00014fd8 subs r2, r3, 1                                                                                                                                    |     r2 = r3 - 1;
    0x00014fda str r2, [r7, 4]                                                                                                                                   |     *((r7 + 4)) = r2;
                                                                                                                                                                 | label_9:
    0x00014fdc cmp r3, 1                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 == 1) {
    0x00014fde beq.w 0x1518c                                                                                                                                     |         goto label_20;
                                                                                                                                                                 |     }
                                                                                                                                                                 | label_4:
    0x00014fe2 ldrd r2, r4, [r6]                                                                                                                                 |     __asm ("ldrd r2, r4, [r6]");
    0x00014fe6 ldr r3, [sp, 0x10]                                                                                                                                |     r3 = var_10h;
    0x00014fe8 str.w r3, [r2, 0x8c]                                                                                                                              |     __asm ("str.w r3, [r2, 0x8c]");
    0x00014fec ldr r3, [r5]                                                                                                                                      |     r3 = *(r5);
    0x00014fee ldr.w r3, [r3, 0x8c]                                                                                                                              |     r3 = *((r3 + 0x8c));
    0x00014ff2 strd r2, r4, [sp, 0x34]                                                                                                                           |     __asm ("strd r2, r4, [var_34h]");
    0x00014ff6 cmp r4, 0                                                                                                                                         |     
    0x00014ff8 bne 0x150fa                                                                                                                                       |     
                                                                                                                                                                 |     while (1) {
                                                                                                                                                                 | label_6:
    0x00014ffa mov r1, sl                                                                                                                                        |         r1 = sl;
    0x00014ffc mov r0, r5                                                                                                                                        |         r0 = r5;
    0x00014ffe blx r3                                                                                                                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x00015000 ldr r4, [sp, 0x38]                                                                                                                                |         r4 = var_38h;
                                                                                                                                                                 |         if (r4 != 0) {
    0x00015002 cbz r4, 0x1501a                                                                                                                                   |             
    0x00015004 ldrb.w r3, [fp]                                                                                                                                   |             r3 = *(fp);
    0x00015008 cmp r3, 0                                                                                                                                         |             
                                                                                                                                                                 |             if (r3 == 0) {
    0x0001500a beq.w 0x15204                                                                                                                                     |                 goto label_21;
                                                                                                                                                                 |             }
    0x0001500e ldr r3, [r4, 4]                                                                                                                                   |             r3 = *((r4 + 4));
    0x00015010 subs r2, r3, 1                                                                                                                                    |             r2 = r3 - 1;
    0x00015012 str r2, [r4, 4]                                                                                                                                   |             *((r4 + 4)) = r2;
                                                                                                                                                                 | label_8:
    0x00015014 cmp r3, 1                                                                                                                                         |             
                                                                                                                                                                 |             if (r3 == 1) {
    0x00015016 beq.w 0x15166                                                                                                                                     |                 goto label_22;
                                                                                                                                                                 |             }
                                                                                                                                                                 |         }
                                                                                                                                                                 | label_3:
    0x0001501a add r7, sp, 0xa4                                                                                                                                  |         r7 += var_a4h;
    0x0001501c ldr r1, [r5, 0x50]                                                                                                                                |         r1 = *((r5 + 0x50));
    0x0001501e mov r0, r7                                                                                                                                        |         r0 = r7;
    0x00015020 blx 0xece8                                                                                                                                        |         fcn_0000ece8 ();
    0x00015024 mov r1, r6                                                                                                                                        |         r1 = r6;
    0x00015026 mov r0, r7                                                                                                                                        |         r0 = r7;
    0x00015028 blx 0xeeb0                                                                                                                                        |         fcn_0000eeb0 ();
    0x0001502c add r4, sp, 0xf0                                                                                                                                  |         r4 += var_f0h;
    0x0001502e mov r0, r4                                                                                                                                        |         r0 = r4;
    0x00015030 blx 0xedb4                                                                                                                                        |         fcn_0000edb4 ();
    0x00015034 add.w r8, sp, 0x20                                                                                                                                |         r8 += var_20h;
    0x00015038 ldr r1, [sp, 0x1c]                                                                                                                                |         r1 = var_1ch;
    0x0001503a mov r0, r8                                                                                                                                        |         r0 = r8;
    0x0001503c blx 0xeb24                                                                                                                                        |         r0 = fcn_0000eb24 ();
    0x00015040 ldm.w r8, {r0, r1, r2, r3}                                                                                                                        |         r0 = *(r8);
                                                                                                                                                                 |         r1 = *((r8 + 4));
                                                                                                                                                                 |         r2 = *((r8 + 8));
                                                                                                                                                                 |         r3 = *((r8 + 12));
    0x00015044 add.w sb, sp, 0x3c                                                                                                                                |         sb += var_3ch;
    0x00015048 add.w ip, sp, 0xc4                                                                                                                                |         
    0x0001504c stm.w r4, {r0, r1, r2, r3}                                                                                                                        |         *(r4) = r0;
                                                                                                                                                                 |         *((r4 + 4)) = r1;
                                                                                                                                                                 |         *((r4 + 8)) = r2;
                                                                                                                                                                 |         *((r4 + 12)) = r3;
    0x00015050 stm.w ip, {r0, r1, r2, r3}                                                                                                                        |         *(ip) = r0;
                                                                                                                                                                 |         *((ip + 4)) = r1;
                                                                                                                                                                 |         *((ip + 8)) = r2;
                                                                                                                                                                 |         *((ip + 12)) = r3;
    0x00015054 mov r1, r7                                                                                                                                        |         r1 = r7;
    0x00015056 mov r0, sb                                                                                                                                        |         r0 = sb;
    0x00015058 blx 0xed60                                                                                                                                        |         fcn_0000ed60 ();
    0x0001505c ldr r0, [sp, 0x100]                                                                                                                               |         r0 = var_100h;
                                                                                                                                                                 |         if (r0 != 0) {
    0x0001505e cbz r0, 0x15064                                                                                                                                   |             
    0x00015060 blx 0xe9a4                                                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                                                 |         }
    0x00015064 mov r0, r4                                                                                                                                        |         r0 = r4;
    0x00015066 blx 0xedb4                                                                                                                                        |         fcn_0000edb4 ();
    0x0001506a ldr r0, [sp, 0xec]                                                                                                                                |         r0 = var_ech;
                                                                                                                                                                 |         if (r0 != 0) {
    0x0001506c cbz r0, 0x15088                                                                                                                                   |             
    0x0001506e ldrb.w r3, [fp]                                                                                                                                   |             r3 = *(fp);
    0x00015072 cmp r3, 0                                                                                                                                         |             
                                                                                                                                                                 |             if (r3 == 0) {
    0x00015074 beq.w 0x151e8                                                                                                                                     |                 goto label_23;
                                                                                                                                                                 |             }
    0x00015078 ldr r3, [r0, 8]                                                                                                                                   |             r3 = *((r0 + 8));
    0x0001507a subs r2, r3, 1                                                                                                                                    |             r2 = r3 - 1;
    0x0001507c str r2, [r0, 8]                                                                                                                                   |             *((r0 + 8)) = r2;
                                                                                                                                                                 | label_7:
    0x0001507e cmp r3, 1                                                                                                                                         |             
                                                                                                                                                                 |             if (r3 != 1) {
    0x00015080 bne 0x15088                                                                                                                                       |                 goto label_24;
                                                                                                                                                                 |             }
    0x00015082 ldr r3, [r0]                                                                                                                                      |             r3 = *(r0);
    0x00015084 ldr r3, [r3, 0xc]                                                                                                                                 |             r3 = *((r3 + 0xc));
    0x00015086 blx r3                                                                                                                                            |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                 |         }
                                                                                                                                                                 | label_24:
    0x00015088 ldr r3, [sp, 0x14]                                                                                                                                |         r3 = var_14h;
    0x0001508a ldr r1, [sp, 0x10]                                                                                                                                |         r1 = var_10h;
    0x0001508c ldr r0, [r5, 0x1c]                                                                                                                                |         r0 = *((r5 + 0x1c));
    0x0001508e ldr r3, [r3]                                                                                                                                      |         r3 = *(r3);
    0x00015090 ldr r2, [r3, 0xc]                                                                                                                                 |         r2 = *((r3 + 0xc));
    0x00015092 mov r3, sb                                                                                                                                        |         r3 = sb;
    0x00015094 blx 0xe74c                                                                                                                                        |         r0 = fcn_0000e74c ();
    0x00015098 mov r4, r0                                                                                                                                        |         r4 = r0;
    0x0001509a cmp r0, 0                                                                                                                                         |         
                                                                                                                                                                 |         if (r0 != 0) {
    0x0001509c bne.w 0x152ae                                                                                                                                     |             goto label_25;
                                                                                                                                                                 |         }
    0x000150a0 ldr r0, [sp, 0x98]                                                                                                                                |         r0 = var_98h;
                                                                                                                                                                 |         if (r0 != 0) {
    0x000150a2 cbz r0, 0x150a8                                                                                                                                   |             
    0x000150a4 blx 0xe9a4                                                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                                                 |         }
    0x000150a8 add r0, sp, 0x88                                                                                                                                  |         r0 += var_88h;
    0x000150aa blx 0xedb4                                                                                                                                        |         fcn_0000edb4 ();
    0x000150ae ldr r0, [sp, 0x84]                                                                                                                                |         r0 = var_84h;
                                                                                                                                                                 |         if (r0 != 0) {
    0x000150b0 cbz r0, 0x150cc                                                                                                                                   |             
    0x000150b2 ldrb.w r3, [fp]                                                                                                                                   |             r3 = *(fp);
    0x000150b6 cmp r3, 0                                                                                                                                         |             
                                                                                                                                                                 |             if (r3 == 0) {
    0x000150b8 beq.w 0x15238                                                                                                                                     |                 goto label_26;
                                                                                                                                                                 |             }
    0x000150bc ldr r3, [r0, 8]                                                                                                                                   |             r3 = *((r0 + 8));
    0x000150be subs r2, r3, 1                                                                                                                                    |             r2 = r3 - 1;
    0x000150c0 str r2, [r0, 8]                                                                                                                                   |             *((r0 + 8)) = r2;
                                                                                                                                                                 | label_10:
    0x000150c2 cmp r3, 1                                                                                                                                         |             
                                                                                                                                                                 |             if (r3 != 1) {
    0x000150c4 bne 0x150cc                                                                                                                                       |                 goto label_27;
                                                                                                                                                                 |             }
    0x000150c6 ldr r3, [r0]                                                                                                                                      |             r3 = *(r0);
    0x000150c8 ldr r3, [r3, 0xc]                                                                                                                                 |             r3 = *((r3 + 0xc));
    0x000150ca blx r3                                                                                                                                            |             uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                 |         }
                                                                                                                                                                 | label_27:
    0x000150cc ldr r2, [pc, 0x28c]                                                                                                                               |         
    0x000150ce ldr r3, [pc, 0x27c]                                                                                                                               |         r3 = *(0x1534e);
    0x000150d0 add r2, pc                                                                                                                                        |         r2 = 0x2a430;
    0x000150d2 ldr r3, [r2, r3]                                                                                                                                  |         r3 = *(0x2a430);
    0x000150d4 ldr r2, [r3]                                                                                                                                      |         r2 = *(0x2a430);
    0x000150d6 ldr r3, [sp, 0x10c]                                                                                                                               |         r3 = var_10ch;
    0x000150d8 eors r2, r3                                                                                                                                       |         r2 ^= r3;
    0x000150da mov.w r3, 0                                                                                                                                       |         r3 = 0;
                                                                                                                                                                 |         if (r2 != r3) {
    0x000150de bne.w 0x152aa                                                                                                                                     |             goto label_28;
                                                                                                                                                                 |         }
    0x000150e2 mov r0, r6                                                                                                                                        |         r0 = r6;
    0x000150e4 add sp, 0x114                                                                                                                                     |         
    0x000150e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                        |         
                                                                                                                                                                 | label_18:
    0x000150ea ldr r3, [sp, 0x10]                                                                                                                                |         r3 = var_10h;
    0x000150ec str.w r3, [r4, 0x9c]                                                                                                                              |         __asm ("str.w r3, [r4, 0x9c]");
    0x000150f0 ldr r3, [r5]                                                                                                                                      |         r3 = *(r5);
    0x000150f2 ldr.w r3, [r3, 0x8c]                                                                                                                              |         r3 = *((r3 + 0x8c));
    0x000150f6 strd r8, r4, [sp, 0x34]                                                                                                                           |         __asm ("strd r8, r4, [var_34h]");
    0x000150fa ldrb.w r2, [fp]                                                                                                                                   |         r2 = *(fp);
    0x000150fe cmp r2, 0                                                                                                                                         |         
                                                                                                                                                                 |         if (r2 == 0) {
    0x00015100 beq 0x151ce                                                                                                                                       |             goto label_29;
                                                                                                                                                                 |         }
    0x00015102 ldr r2, [r4, 4]                                                                                                                                   |         r2 = *((r4 + 4));
    0x00015104 adds r2, 1                                                                                                                                        |         r2++;
    0x00015106 str r2, [r4, 4]                                                                                                                                   |         *((r4 + 4)) = r2;
    0x00015108 b 0x14ffa                                                                                                                                         |         
                                                                                                                                                                 |     }
                                                                                                                                                                 | label_14:
    0x0001510a adds r3, r7, 4                                                                                                                                    |     r3 = r7 + 4;
    0x0001510c dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x00015110 ldrex r1, [r3]                                                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x00015114 adds r1, 1                                                                                                                                        |         r1++;
    0x00015116 strex r2, r1, [r3]                                                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001511a cmp r2, 0                                                                                                                                         |         
    0x0001511c bne 0x15110                                                                                                                                       |         
                                                                                                                                                                 |     } while (r2 != 0);
    0x0001511e dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x00015122 b 0x14f4e                                                                                                                                         |     goto label_0;
                                                                                                                                                                 | label_17:
    0x00015124 ldr r3, [r0]                                                                                                                                      |     r3 = *(r0);
    0x00015126 str r0, [sp, 0x18]                                                                                                                                |     var_18h = r0;
    0x00015128 ldr r3, [r3, 8]                                                                                                                                   |     r3 = *((r3 + 8));
    0x0001512a blx r3                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001512c ldrb.w r3, [fp]                                                                                                                                   |     r3 = *(fp);
    0x00015130 ldr r0, [sp, 0x18]                                                                                                                                |     r0 = var_18h;
    0x00015132 cmp r3, 0                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 == 0) {
    0x00015134 beq.w 0x15254                                                                                                                                     |         goto label_30;
                                                                                                                                                                 |     }
    0x00015138 ldr r3, [r0, 8]                                                                                                                                   |     r3 = *((r0 + 8));
    0x0001513a subs r2, r3, 1                                                                                                                                    |     r2 = r3 - 1;
    0x0001513c str r2, [r0, 8]                                                                                                                                   |     *((r0 + 8)) = r2;
                                                                                                                                                                 | label_11:
    0x0001513e cmp r3, 1                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 != 1) {
    0x00015140 bne.w 0x14fc2                                                                                                                                     |         goto label_1;
                                                                                                                                                                 |     }
    0x00015144 ldr r3, [r0]                                                                                                                                      |     r3 = *(r0);
    0x00015146 ldr r3, [r3, 0xc]                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x00015148 blx r3                                                                                                                                            |     uint32_t (*r3)(uint32_t) (r3);
    0x0001514a b 0x14fc2                                                                                                                                         |     goto label_1;
                                                                                                                                                                 | label_15:
    0x0001514c adds r3, r7, 4                                                                                                                                    |     r3 = r7 + 4;
    0x0001514e dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x00015152 ldrex r1, [r3]                                                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x00015156 adds r1, 1                                                                                                                                        |         r1++;
    0x00015158 strex r2, r1, [r3]                                                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001515c cmp r2, 0                                                                                                                                         |         
    0x0001515e bne 0x15152                                                                                                                                       |         
                                                                                                                                                                 |     } while (r2 != 0);
    0x00015160 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x00015164 b 0x14f8a                                                                                                                                         |     goto label_2;
                                                                                                                                                                 | label_22:
    0x00015166 ldr r3, [r4]                                                                                                                                      |     r3 = *(r4);
    0x00015168 mov r0, r4                                                                                                                                        |     r0 = r4;
    0x0001516a ldr r3, [r3, 8]                                                                                                                                   |     r3 = *((r3 + 8));
    0x0001516c blx r3                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001516e ldrb.w r3, [fp]                                                                                                                                   |     r3 = *(fp);
    0x00015172 cmp r3, 0                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 == 0) {
    0x00015174 beq 0x15272                                                                                                                                       |         goto label_31;
                                                                                                                                                                 |     }
    0x00015176 ldr r3, [r4, 8]                                                                                                                                   |     r3 = *((r4 + 8));
    0x00015178 subs r2, r3, 1                                                                                                                                    |     r2 = r3 - 1;
    0x0001517a str r2, [r4, 8]                                                                                                                                   |     *((r4 + 8)) = r2;
                                                                                                                                                                 | label_12:
    0x0001517c cmp r3, 1                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 != 1) {
    0x0001517e bne.w 0x1501a                                                                                                                                     |         goto label_3;
                                                                                                                                                                 |     }
    0x00015182 ldr r3, [r4]                                                                                                                                      |     r3 = *(r4);
    0x00015184 mov r0, r4                                                                                                                                        |     r0 = r4;
    0x00015186 ldr r3, [r3, 0xc]                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x00015188 blx r3                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001518a b 0x1501a                                                                                                                                         |     goto label_3;
                                                                                                                                                                 | label_20:
    0x0001518c ldr r3, [r7]                                                                                                                                      |     r3 = *(r7);
    0x0001518e mov r0, r7                                                                                                                                        |     r0 = r7;
    0x00015190 ldr r3, [r3, 8]                                                                                                                                   |     r3 = *((r3 + 8));
    0x00015192 blx r3                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00015194 ldrb.w r3, [fp]                                                                                                                                   |     r3 = *(fp);
    0x00015198 cmp r3, 0                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 == 0) {
    0x0001519a beq 0x1528e                                                                                                                                       |         goto label_32;
                                                                                                                                                                 |     }
    0x0001519c ldr r3, [r7, 8]                                                                                                                                   |     r3 = *((r7 + 8));
    0x0001519e subs r2, r3, 1                                                                                                                                    |     r2 = r3 - 1;
    0x000151a0 str r2, [r7, 8]                                                                                                                                   |     *((r7 + 8)) = r2;
                                                                                                                                                                 | label_13:
    0x000151a2 cmp r3, 1                                                                                                                                         |     
                                                                                                                                                                 |     if (r3 != 1) {
    0x000151a4 bne.w 0x14fe2                                                                                                                                     |         goto label_4;
                                                                                                                                                                 |     }
    0x000151a8 ldr r3, [r7]                                                                                                                                      |     r3 = *(r7);
    0x000151aa mov r0, r7                                                                                                                                        |     r0 = r7;
    0x000151ac ldr r3, [r3, 0xc]                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x000151ae blx r3                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000151b0 b 0x14fe2                                                                                                                                         |     goto label_4;
                                                                                                                                                                 | label_16:
    0x000151b2 adds r2, r0, 4                                                                                                                                    |     r2 = r0 + 4;
    0x000151b4 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x000151b8 ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x000151bc subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x000151be strex ip, r1, [r2]                                                                                                                                |         __asm ("strex ip, r1, [r2]");
    0x000151c2 cmp.w ip, 0                                                                                                                                       |         
    0x000151c6 bne 0x151b8                                                                                                                                       |         
                                                                                                                                                                 |     } while (ip != 0);
    0x000151c8 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x000151cc b 0x14fbc                                                                                                                                         |     goto label_5;
                                                                                                                                                                 | label_29:
    0x000151ce adds r4, 4                                                                                                                                        |     r4 += 4;
    0x000151d0 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x000151d4 ldrex r2, [r4]                                                                                                                                    |         __asm ("ldrex r2, [r4]");
    0x000151d8 adds r2, 1                                                                                                                                        |         r2++;
    0x000151da strex r1, r2, [r4]                                                                                                                                |         __asm ("strex r1, r2, [r4]");
    0x000151de cmp r1, 0                                                                                                                                         |         
    0x000151e0 bne 0x151d4                                                                                                                                       |         
                                                                                                                                                                 |     } while (r1 != 0);
    0x000151e2 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x000151e6 b 0x14ffa                                                                                                                                         |     goto label_6;
                                                                                                                                                                 | label_23:
    0x000151e8 add.w r2, r0, 8                                                                                                                                   |     r2 = r0 + 8;
    0x000151ec dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x000151f0 ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x000151f4 subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x000151f6 strex r4, r1, [r2]                                                                                                                                |         __asm ("strex r4, r1, [r2]");
    0x000151fa cmp r4, 0                                                                                                                                         |         
    0x000151fc bne 0x151f0                                                                                                                                       |         
                                                                                                                                                                 |     } while (r4 != 0);
    0x000151fe dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x00015202 b 0x1507e                                                                                                                                         |     goto label_7;
                                                                                                                                                                 | label_21:
    0x00015204 adds r2, r4, 4                                                                                                                                    |     r2 = r4 + 4;
    0x00015206 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x0001520a ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001520e subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x00015210 strex r0, r1, [r2]                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00015214 cmp r0, 0                                                                                                                                         |         
    0x00015216 bne 0x1520a                                                                                                                                       |         
                                                                                                                                                                 |     } while (r0 != 0);
    0x00015218 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x0001521c b 0x15014                                                                                                                                         |     goto label_8;
                                                                                                                                                                 | label_19:
    0x0001521e adds r2, r7, 4                                                                                                                                    |     r2 = r7 + 4;
    0x00015220 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x00015224 ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00015228 subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x0001522a strex r0, r1, [r2]                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x0001522e cmp r0, 0                                                                                                                                         |         
    0x00015230 bne 0x15224                                                                                                                                       |         
                                                                                                                                                                 |     } while (r0 != 0);
    0x00015232 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x00015236 b 0x14fdc                                                                                                                                         |     goto label_9;
                                                                                                                                                                 | label_26:
    0x00015238 add.w r2, r0, 8                                                                                                                                   |     r2 = r0 + 8;
    0x0001523c dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x00015240 ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00015244 subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x00015246 strex r4, r1, [r2]                                                                                                                                |         __asm ("strex r4, r1, [r2]");
    0x0001524a cmp r4, 0                                                                                                                                         |         
    0x0001524c bne 0x15240                                                                                                                                       |         
                                                                                                                                                                 |     } while (r4 != 0);
    0x0001524e dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x00015252 b 0x150c2                                                                                                                                         |     goto label_10;
                                                                                                                                                                 | label_30:
    0x00015254 add.w r2, r0, 8                                                                                                                                   |     r2 = r0 + 8;
    0x00015258 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x0001525c ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x00015260 subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x00015262 strex ip, r1, [r2]                                                                                                                                |         __asm ("strex ip, r1, [r2]");
    0x00015266 cmp.w ip, 0                                                                                                                                       |         
    0x0001526a bne 0x1525c                                                                                                                                       |         
                                                                                                                                                                 |     } while (ip != 0);
    0x0001526c dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x00015270 b 0x1513e                                                                                                                                         |     goto label_11;
                                                                                                                                                                 | label_31:
    0x00015272 add.w r2, r4, 8                                                                                                                                   |     r2 = r4 + 8;
    0x00015276 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x0001527a ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001527e subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x00015280 strex r0, r1, [r2]                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x00015284 cmp r0, 0                                                                                                                                         |         
    0x00015286 bne 0x1527a                                                                                                                                       |         
                                                                                                                                                                 |     } while (r0 != 0);
    0x00015288 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x0001528c b 0x1517c                                                                                                                                         |     goto label_12;
                                                                                                                                                                 | label_32:
    0x0001528e add.w r2, r7, 8                                                                                                                                   |     r2 = r7 + 8;
    0x00015292 dmb ish                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                 |     do {
    0x00015296 ldrex r3, [r2]                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001529a subs r1, r3, 1                                                                                                                                    |         r1 = r3 - 1;
    0x0001529c strex r0, r1, [r2]                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x000152a0 cmp r0, 0                                                                                                                                         |         
    0x000152a2 bne 0x15296                                                                                                                                       |         
                                                                                                                                                                 |     } while (r0 != 0);
    0x000152a4 dmb ish                                                                                                                                           |     __asm ("dmb ish");
    0x000152a8 b 0x151a2                                                                                                                                         |     goto label_13;
                                                                                                                                                                 | label_28:
    0x000152aa blx 0xea48                                                                                                                                        |     fcn_0000ea48 ();
                                                                                                                                                                 | label_25:
    0x000152ae ldr r3, [r5]                                                                                                                                      |     r3 = *(r5);
    0x000152b0 ldr r0, [r6, 4]                                                                                                                                   |     r0 = *((r6 + 4));
    0x000152b2 ldr.w r7, [r3, 0x94]                                                                                                                              |     r7 = *((r3 + 0x94));
    0x000152b6 ldr r3, [r6]                                                                                                                                      |     r3 = *(r6);
    0x000152b8 str r0, [sp, 0x38]                                                                                                                                |     var_38h = r0;
    0x000152ba str r3, [sp, 0x34]                                                                                                                                |     var_34h = r3;
                                                                                                                                                                 |     if (r0 != 0) {
    0x000152bc cbz r0, 0x152c2                                                                                                                                   |         
    0x000152be bl 0x18fb0                                                                                                                                        |         fcn_00018fb0 (r0);
                                                                                                                                                                 |     }
    0x000152c2 mov r1, sl                                                                                                                                        |     r1 = sl;
    0x000152c4 mov r0, r5                                                                                                                                        |     r0 = r5;
    0x000152c6 blx r7                                                                                                                                            |     uint32_t (*r7)(uint32_t, uint32_t) (r0, r1);
    0x000152c8 ldr r0, [sp, 0x38]                                                                                                                                |     r0 = var_38h;
                                                                                                                                                                 |     if (r0 != 0) {
    0x000152ca cbz r0, 0x152d0                                                                                                                                   |         
    0x000152cc bl 0x18a84                                                                                                                                        |         fcn_00018a84 (r0);
                                                                                                                                                                 |     }
    0x000152d0 movs r0, 0x28                                                                                                                                     |     r0 = 0x28;
    0x000152d2 blx 0xe764                                                                                                                                        |     fcn_0000e764 ();
    0x000152d6 mov r1, r4                                                                                                                                        |     r1 = r4;
    0x000152d8 mov r4, r0                                                                                                                                        |     r4 = r0;
    0x000152da bl 0x17aa8                                                                                                                                        |     fcn_00017aa8 (r0, r1);
    0x000152de ldr r3, [pc, 0x80]                                                                                                                                |     r3 = *(0x15362);
    0x000152e0 mov r0, r4                                                                                                                                        |     r0 = r4;
    0x000152e2 ldr r1, [sp, 0xc]                                                                                                                                 |     r1 = var_ch;
    0x000152e4 ldr r2, [r1, r3]                                                                                                                                  |     r2 = *((r1 + r3));
    0x000152e6 ldr r3, [pc, 0x7c]                                                                                                                                |     r3 = *(0x15366);
    0x000152e8 ldr r1, [r1, r3]                                                                                                                                  |     r1 = *((r1 + r3));
    0x000152ea blx 0xed0c                                                                                                                                        |     fcn_0000ed0c ();
    0x000152ee ldr r0, [sp, 0x38]                                                                                                                                |     r0 = var_38h;
                                                                                                                                                                 |     if (r0 != 0) {
    0x000152f0 cbz r0, 0x152fe                                                                                                                                   |         
    0x000152f2 bl 0x18a84                                                                                                                                        |         fcn_00018a84 (r0);
    0x000152f6 b 0x152fe                                                                                                                                         |         
                                                                                                                                                                 |     }
    0x000152fe mov r0, sb                                                                                                                                        |     r0 = sb;
    0x00015300 bl 0x1842c                                                                                                                                        |     fcn_0001842c (r0);
                                                                                                                                                                 |     do {
    0x00015304 ldr r0, [r6, 4]                                                                                                                                   |         r0 = *((r6 + 4));
                                                                                                                                                                 |         if (r0 != 0) {
    0x00015306 cbz r0, 0x1530c                                                                                                                                   |             
    0x00015308 bl 0x18a84                                                                                                                                        |             r0 = fcn_00018a84 (r0);
                                                                                                                                                                 |         }
    0x0001530c blx 0xea54                                                                                                                                        |         fcn_0000ea54 ();
    0x00015310 b 0x15304                                                                                                                                         |         
                                                                                                                                                                 |     } while (1);
                                                                                                                                                                 | }
    ; assembly                                                                               | /* r2dec pseudo code output */
                                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1f850 */
                                                                                             | #include <stdint.h>
                                                                                             |  
    ; (fcn) method.mqtt::connect_data.connect_data_MQTTAsync_connectData_const_ ()           | void method_mqtt::connect_data_connect_data_MQTTAsync_connectData_const_ (int16_t arg1, int16_t arg2) {
                                                                                             |     r0 = arg1;
                                                                                             |     r1 = arg2;
                                                                                             |     /* mqtt::connect_data::connect_data(MQTTAsync_connectData const&) */
    0x0001f850 ldr.w ip, [pc, 0x13c]                                                         |     
    0x0001f854 push.w {r3, r4, r5, r6, r7, r8, sb, lr}                                       |     
    0x0001f858 mov r4, r0                                                                    |     r4 = r0;
    0x0001f85a ldr.w sb, [r1, 0xc]                                                           |     sb = *((r1 + 0xc));
    0x0001f85e mov r5, r0                                                                    |     r5 = r0;
    0x0001f860 add ip, pc                                                                    |     
    0x0001f862 mov r6, r1                                                                    |     r6 = r1;
    0x0001f864 add.w ip, ip, 0x78                                                            |     ip = 0x3f26c;
    0x0001f868 ldr.w r8, [pc, 0x128]                                                         |     r8 = *(0x0001f994);
    0x0001f86c ldm.w ip!, {r0, r1, r2, r3}                                                   |     r0 = *(ip!);
                                                                                             |     r1 = *((ip! + 4));
                                                                                             |     r2 = *((ip! + 8));
                                                                                             |     r3 = *((ip! + 12));
    0x0001f870 movs r7, 0                                                                    |     r7 = 0;
    0x0001f872 add r8, pc                                                                    |     r8 += pc;
    0x0001f874 stm r5!, {r0, r1, r2, r3}                                                     |     *(r5!) = r0;
                                                                                             |     *((r5! + 4)) = r1;
                                                                                             |     *((r5! + 8)) = r2;
                                                                                             |     *((r5! + 12)) = r3;
    0x0001f876 movs r0, 0x24                                                                 |     r0 = 0x24;
    0x0001f878 ldr.w r3, [ip]                                                                |     r3 = *(0x3f26c);
    0x0001f87c str r3, [r5]                                                                  |     *(r5) = r3;
    0x0001f87e strd r7, r7, [r4, 0x14]                                                       |     __asm ("strd r7, r7, [r4, 0x14]");
    0x0001f882 ldr r7, [r6, 0x10]                                                            |     r7 = *((r6 + 0x10));
    0x0001f884 blx 0xe5ec                                                                    |     fcn_0000e5ec ();
    0x0001f888 ldr r3, [pc, 0x10c]                                                           |     r3 = *(0x1f998);
    0x0001f88a mov r5, r0                                                                    |     r5 = r0;
    0x0001f88c movs r0, 1                                                                    |     r0 = 1;
    0x0001f88e add.w r2, r7, sb                                                              |     r2 = r7 + sb;
    0x0001f892 strd r0, r0, [r5, 4]                                                          |     __asm ("strd r0, r0, [r5, 4]");
    0x0001f896 mov r1, r7                                                                    |     r1 = r7;
    0x0001f898 ldr.w sb, [r8, r3]                                                            |     sb = *((r8 + r3));
    0x0001f89c mov r7, r5                                                                    |     r7 = r5;
    0x0001f89e add.w r3, r5, 0x14                                                            |     r3 = r5 + 0x14;
    0x0001f8a2 add.w r0, sb, 8                                                               |     r0 = sb + 8;
    0x0001f8a6 str r0, [r7], 0xc                                                             |     *(r7) = r0;
                                                                                             |     r7 += 0xc;
    0x0001f8aa mov r0, r7                                                                    |     r0 = r7;
    0x0001f8ac str r3, [r5, 0xc]                                                             |     *((r5 + 0xc)) = r3;
    0x0001f8ae bl 0x1d620                                                                    |     fcn_0001d620 (r0, r1, r2);
    0x0001f8b2 ldr r6, [r6, 8]                                                               |     r6 = *((r6 + 8));
    0x0001f8b4 str r7, [r4, 0x1c]                                                            |     *((r4 + 0x1c)) = r7;
    0x0001f8b6 str r5, [r4, 0x20]                                                            |     *((r4 + 0x20)) = r5;
                                                                                             |     if (r6 == 0) {
    0x0001f8b8 cbz r6, 0x1f906                                                               |         goto label_0;
                                                                                             |     }
    0x0001f8ba mov r0, r6                                                                    |     r0 = r6;
    0x0001f8bc blx 0xec10                                                                    |     r0 = fcn_0000ec10 ();
    0x0001f8c0 mov r7, r0                                                                    |     r7 = r0;
    0x0001f8c2 movs r0, 0x24                                                                 |     r0 = 0x24;
    0x0001f8c4 blx 0xe5ec                                                                    |     r0 = fcn_0000e5ec ();
    0x0001f8c8 mov r5, r0                                                                    |     r5 = r0;
    0x0001f8ca add.w r3, sb, 8                                                               |     r3 = sb + 8;
    0x0001f8ce movs r0, 1                                                                    |     r0 = 1;
    0x0001f8d0 adds r2, r6, r7                                                               |     r2 = r6 + r7;
    0x0001f8d2 mov r1, r6                                                                    |     r1 = r6;
    0x0001f8d4 mov r6, r5                                                                    |     r6 = r5;
    0x0001f8d6 strd r0, r0, [r5, 4]                                                          |     __asm ("strd r0, r0, [r5, 4]");
    0x0001f8da str r3, [r6], 0xc                                                             |     *(r6) = r3;
                                                                                             |     r6 += 0xc;
    0x0001f8de add.w r3, r5, 0x14                                                            |     r3 = r5 + 0x14;
    0x0001f8e2 mov r0, r6                                                                    |     r0 = r6;
    0x0001f8e4 str r3, [r5, 0xc]                                                             |     *((r5 + 0xc)) = r3;
    0x0001f8e6 bl 0x1d620                                                                    |     fcn_0001d620 (r0, r1, r2);
    0x0001f8ea ldr r7, [r4, 0x18]                                                            |     r7 = *((r4 + 0x18));
    0x0001f8ec strd r6, r5, [r4, 0x14]                                                       |     __asm ("strd r6, r5, [r4, 0x14]");
                                                                                             |     if (r7 == 0) {
    0x0001f8f0 cbz r7, 0x1f906                                                               |         goto label_0;
                                                                                             |     }
    0x0001f8f2 ldr r3, [pc, 0xa8]                                                            |     r3 = *(0x1f99e);
    0x0001f8f4 ldr.w r5, [r8, r3]                                                            |     r5 = *((r8 + r3));
    0x0001f8f8 ldrb r3, [r5]                                                                 |     r3 = *(r5);
                                                                                             |     if (r3 == 0) {
    0x0001f8fa cbz r3, 0x1f932                                                               |         goto label_3;
                                                                                             |     }
    0x0001f8fc ldr r3, [r7, 4]                                                               |     r3 = *((r7 + 4));
    0x0001f8fe subs r2, r3, 1                                                                |     r2 = r3 - 1;
    0x0001f900 str r2, [r7, 4]                                                               |     *((r7 + 4)) = r2;
                                                                                             | label_1:
    0x0001f902 cmp r3, 1                                                                     |     
    0x0001f904 beq 0x1f912                                                                   |     
                                                                                             |     while (r3 != 1) {
                                                                                             | label_0:
    0x0001f906 mov r0, r4                                                                    |         r0 = r4;
    0x0001f908 blx 0xe8dc                                                                    |         MQTTProperties_add ();
    0x0001f90c mov r0, r4                                                                    |         r0 = r4;
    0x0001f90e pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                        |         
    0x0001f912 ldr r3, [r7]                                                                  |         r3 = *(r7);
    0x0001f914 mov r0, r7                                                                    |         r0 = r7;
    0x0001f916 ldr r3, [r3, 8]                                                               |         r3 = *((r3 + 8));
    0x0001f918 blx r3                                                                        |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001f91a ldrb r3, [r5]                                                                 |         r3 = *(r5);
                                                                                             |         if (r3 == 0) {
    0x0001f91c cbz r3, 0x1f94c                                                               |             goto label_4;
                                                                                             |         }
    0x0001f91e ldr r3, [r7, 8]                                                               |         r3 = *((r7 + 8));
    0x0001f920 subs r2, r3, 1                                                                |         r2 = r3 - 1;
    0x0001f922 str r2, [r7, 8]                                                               |         *((r7 + 8)) = r2;
                                                                                             | label_2:
    0x0001f924 cmp r3, 1                                                                     |         
    0x0001f926 bne 0x1f906                                                                   |         
                                                                                             |     }
    0x0001f928 ldr r3, [r7]                                                                  |     r3 = *(r7);
    0x0001f92a mov r0, r7                                                                    |     r0 = r7;
    0x0001f92c ldr r3, [r3, 0xc]                                                             |     r3 = *((r3 + 0xc));
    0x0001f92e blx r3                                                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001f930 b 0x1f906                                                                     |     goto label_0;
                                                                                             | label_3:
    0x0001f932 adds r2, r7, 4                                                                |     r2 = r7 + 4;
    0x0001f934 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x0001f938 ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x0001f93c subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x0001f93e strex r0, r1, [r2]                                                            |         __asm ("strex r0, r1, [r2]");
    0x0001f942 cmp r0, 0                                                                     |         
    0x0001f944 bne 0x1f938                                                                   |         
                                                                                             |     } while (r0 != 0);
    0x0001f946 dmb ish                                                                       |     __asm ("dmb ish");
    0x0001f94a b 0x1f902                                                                     |     goto label_1;
                                                                                             | label_4:
    0x0001f94c add.w r2, r7, 8                                                               |     r2 = r7 + 8;
    0x0001f950 dmb ish                                                                       |     __asm ("dmb ish");
                                                                                             |     do {
    0x0001f954 ldrex r3, [r2]                                                                |         __asm ("ldrex r3, [r2]");
    0x0001f958 subs r1, r3, 1                                                                |         r1 = r3 - 1;
    0x0001f95a strex r0, r1, [r2]                                                            |         __asm ("strex r0, r1, [r2]");
    0x0001f95e cmp r0, 0                                                                     |         
    0x0001f960 bne 0x1f954                                                                   |         
                                                                                             |     } while (r0 != 0);
    0x0001f962 dmb ish                                                                       |     __asm ("dmb ish");
    0x0001f966 b 0x1f924                                                                     |     goto label_2;
                                                                                             | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1efb0 */
                                                                                     | #include <stdint.h>
                                                                                     |  
    ; (fcn) method.mqtt::connect_data.connect_data_mqtt::buffer_ref_char__ ()        | void method_mqtt::connect_data_connect_data_mqtt::buffer_ref_char_ (int16_t arg1, int16_t arg2) {
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
                                                                                     |     /* mqtt::connect_data::connect_data(mqtt::buffer_ref<char>) */
    0x0001efb0 ldr.w ip, [pc, 0x78]                                                  |     
    0x0001efb4 push {r4, r5, r6, lr}                                                 |     
    0x0001efb6 mov r4, r0                                                            |     r4 = r0;
    0x0001efb8 mov r5, r1                                                            |     r5 = r1;
    0x0001efba mov lr, r0                                                            |     lr = r0;
    0x0001efbc add ip, pc                                                            |     
    0x0001efbe add.w ip, ip, 0x78                                                    |     ip = 0x3e064;
    0x0001efc2 ldr r6, [pc, 0x6c]                                                    |     
    0x0001efc4 ldm.w ip!, {r0, r1, r2, r3}                                           |     r0 = *(ip!);
                                                                                     |     r1 = *((ip! + 4));
                                                                                     |     r2 = *((ip! + 8));
                                                                                     |     r3 = *((ip! + 12));
    0x0001efc8 add r6, pc                                                            |     r6 = 0x3dffe;
    0x0001efca stm.w lr!, {r0, r1, r2, r3}                                           |     *(lr!) = r0;
                                                                                     |     *((lr! + 4)) = r1;
                                                                                     |     *((lr! + 8)) = r2;
                                                                                     |     *((lr! + 12)) = r3;
    0x0001efce ldr.w r3, [ip]                                                        |     r3 = imp._ZTINSt6thread6_StateE;
    0x0001efd2 str.w r3, [lr]                                                        |     __asm ("str.w r3, [lr]");
    0x0001efd6 ldrd r2, r3, [r5]                                                     |     __asm ("ldrd r2, r3, [r5]");
    0x0001efda strd r2, r3, [r4, 0x14]                                               |     __asm ("strd r2, r3, [r4, 0x14]");
                                                                                     |     if (r3 != 0) {
    0x0001efde cbz r3, 0x1efee                                                       |         
    0x0001efe0 ldr r2, [pc, 0x50]                                                    |         r2 = *(0x1f034);
    0x0001efe2 ldr r2, [r6, r2]                                                      |         r2 = *((r6 + r2));
    0x0001efe4 ldrb r2, [r2]                                                         |         r2 = *(r2);
                                                                                     |         if (r2 == 0) {
    0x0001efe6 cbz r2, 0x1effe                                                       |             goto label_1;
                                                                                     |         }
    0x0001efe8 ldr r2, [r3, 4]                                                       |         r2 = *((r3 + 4));
    0x0001efea adds r2, 1                                                            |         r2++;
    0x0001efec str r2, [r3, 4]                                                       |         *((r3 + 4)) = r2;
                                                                                     |     }
                                                                                     | label_0:
    0x0001efee movs r3, 0                                                            |     r3 = 0;
    0x0001eff0 mov r0, r4                                                            |     r0 = r4;
    0x0001eff2 strd r3, r3, [r4, 0x1c]                                               |     __asm ("strd r3, r3, [r4, 0x1c]");
    0x0001eff6 blx 0xe8dc                                                            |     MQTTProperties_add ();
    0x0001effa mov r0, r4                                                            |     r0 = r4;
    0x0001effc pop {r4, r5, r6, pc}                                                  |     
                                                                                     | label_1:
    0x0001effe adds r3, 4                                                            |     r3 += 4;
    0x0001f000 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0001f004 ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x0001f008 adds r1, 1                                                            |         r1++;
    0x0001f00a strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x0001f00e cmp r2, 0                                                             |         
    0x0001f010 bne 0x1f004                                                           |         
                                                                                     |     } while (r2 != 0);
    0x0001f012 dmb ish                                                               |     __asm ("dmb ish");
    0x0001f016 b 0x1efee                                                             |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x1f038 */
                                                                                                             | #include <stdint.h>
                                                                                                             |  
    ; (fcn) method.mqtt::connect_data.connect_data_mqtt::buffer_ref_char___mqtt::buffer_ref_char__ ()        | void method_mqtt::connect_data_connect_data_mqtt::buffer_ref_char_mqtt::buffer_ref_char_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                             |     r0 = arg1;
                                                                                                             |     r1 = arg2;
                                                                                                             |     r2 = arg3;
                                                                                                             |     /* mqtt::connect_data::connect_data(mqtt::buffer_ref<char>, mqtt::buffer_ref<char>) */
    0x0001f038 ldr.w ip, [pc, 0xa8]                                                                          |     
    0x0001f03c push {r3, r4, r5, r6, r7, lr}                                                                 |     
    0x0001f03e mov r4, r0                                                                                    |     r4 = r0;
    0x0001f040 mov r6, r1                                                                                    |     r6 = r1;
    0x0001f042 mov lr, r0                                                                                    |     lr = r0;
    0x0001f044 add ip, pc                                                                                    |     
    0x0001f046 mov r5, r2                                                                                    |     r5 = r2;
    0x0001f048 add.w ip, ip, 0x78                                                                            |     ip = 0x3e1a4;
    0x0001f04c ldr r7, [pc, 0x98]                                                                            |     
    0x0001f04e ldm.w ip!, {r0, r1, r2, r3}                                                                   |     r0 = *(ip!);
                                                                                                             |     r1 = *((ip! + 4));
                                                                                                             |     r2 = *((ip! + 8));
                                                                                                             |     r3 = *((ip! + 12));
    0x0001f052 add r7, pc                                                                                    |     r7 = 0x3e13e;
    0x0001f054 stm.w lr!, {r0, r1, r2, r3}                                                                   |     *(lr!) = r0;
                                                                                                             |     *((lr! + 4)) = r1;
                                                                                                             |     *((lr! + 8)) = r2;
                                                                                                             |     *((lr! + 12)) = r3;
    0x0001f058 ldr.w r3, [ip]                                                                                |     r3 = imp._ZTINSt6thread6_StateE;
    0x0001f05c str.w r3, [lr]                                                                                |     __asm ("str.w r3, [lr]");
    0x0001f060 ldrd r2, r3, [r6]                                                                             |     __asm ("ldrd r2, r3, [r6]");
    0x0001f064 strd r2, r3, [r4, 0x14]                                                                       |     __asm ("strd r2, r3, [r4, 0x14]");
                                                                                                             |     if (r3 != 0) {
    0x0001f068 cbz r3, 0x1f078                                                                               |         
    0x0001f06a ldr r2, [pc, 0x80]                                                                            |         r2 = *(0x1f0ee);
    0x0001f06c ldr r2, [r7, r2]                                                                              |         r2 = *((r7 + r2));
    0x0001f06e ldrb r2, [r2]                                                                                 |         r2 = *(r2);
                                                                                                             |         if (r2 == 0) {
    0x0001f070 cbz r2, 0x1f09a                                                                               |             goto label_2;
                                                                                                             |         }
    0x0001f072 ldr r2, [r3, 4]                                                                               |         r2 = *((r3 + 4));
    0x0001f074 adds r2, 1                                                                                    |         r2++;
    0x0001f076 str r2, [r3, 4]                                                                               |         *((r3 + 4)) = r2;
                                                                                                             |     }
                                                                                                             | label_0:
    0x0001f078 ldrd r2, r3, [r5]                                                                             |     __asm ("ldrd r2, r3, [r5]");
    0x0001f07c strd r2, r3, [r4, 0x1c]                                                                       |     __asm ("strd r2, r3, [r4, 0x1c]");
                                                                                                             |     if (r3 != 0) {
    0x0001f080 cbz r3, 0x1f090                                                                               |         
    0x0001f082 ldr r2, [pc, 0x68]                                                                            |         r2 = *(0x1f0ee);
    0x0001f084 ldr r2, [r7, r2]                                                                              |         r2 = *((r7 + r2));
    0x0001f086 ldrb r2, [r2]                                                                                 |         r2 = *(r2);
                                                                                                             |         if (r2 == 0) {
    0x0001f088 cbz r2, 0x1f0b4                                                                               |             goto label_3;
                                                                                                             |         }
    0x0001f08a ldr r2, [r3, 4]                                                                               |         r2 = *((r3 + 4));
    0x0001f08c adds r2, 1                                                                                    |         r2++;
    0x0001f08e str r2, [r3, 4]                                                                               |         *((r3 + 4)) = r2;
                                                                                                             |     }
                                                                                                             | label_1:
    0x0001f090 mov r0, r4                                                                                    |     r0 = r4;
    0x0001f092 blx 0xe8dc                                                                                    |     MQTTProperties_add ();
    0x0001f096 mov r0, r4                                                                                    |     r0 = r4;
    0x0001f098 pop {r3, r4, r5, r6, r7, pc}                                                                  |     
                                                                                                             | label_2:
    0x0001f09a adds r3, 4                                                                                    |     r3 += 4;
    0x0001f09c dmb ish                                                                                       |     __asm ("dmb ish");
                                                                                                             |     do {
    0x0001f0a0 ldrex r1, [r3]                                                                                |         __asm ("ldrex r1, [r3]");
    0x0001f0a4 adds r1, 1                                                                                    |         r1++;
    0x0001f0a6 strex r2, r1, [r3]                                                                            |         __asm ("strex r2, r1, [r3]");
    0x0001f0aa cmp r2, 0                                                                                     |         
    0x0001f0ac bne 0x1f0a0                                                                                   |         
                                                                                                             |     } while (r2 != 0);
    0x0001f0ae dmb ish                                                                                       |     __asm ("dmb ish");
    0x0001f0b2 b 0x1f078                                                                                     |     goto label_0;
                                                                                                             | label_3:
    0x0001f0b4 adds r3, 4                                                                                    |     r3 += 4;
    0x0001f0b6 dmb ish                                                                                       |     __asm ("dmb ish");
                                                                                                             |     do {
    0x0001f0ba ldrex r1, [r3]                                                                                |         __asm ("ldrex r1, [r3]");
    0x0001f0be adds r1, 1                                                                                    |         r1++;
    0x0001f0c0 strex r2, r1, [r3]                                                                            |         __asm ("strex r2, r1, [r3]");
    0x0001f0c4 cmp r2, 0                                                                                     |         
    0x0001f0c6 bne 0x1f0ba                                                                                   |         
                                                                                                             |     } while (r2 != 0);
    0x0001f0c8 dmb ish                                                                                       |     __asm ("dmb ish");
    0x0001f0cc b 0x1f090                                                                                     |     goto label_1;
                                                                                                             | }
    ; assembly                                                                                               | /* r2dec pseudo code output */
                                                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1f038 */
                                                                                                             | #include <stdint.h>
                                                                                                             |  
    ; (fcn) method.mqtt::connect_data.connect_data_mqtt::buffer_ref_char___mqtt::buffer_ref_char__ ()        | void method_mqtt::connect_data_connect_data_mqtt::buffer_ref_char_mqtt::buffer_ref_char_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                             |     r0 = arg1;
                                                                                                             |     r1 = arg2;
                                                                                                             |     r2 = arg3;
                                                                                                             |     /* mqtt::connect_data::connect_data(mqtt::buffer_ref<char>, mqtt::buffer_ref<char>) */
    0x0001f038 ldr.w ip, [pc, 0xa8]                                                                          |     
    0x0001f03c push {r3, r4, r5, r6, r7, lr}                                                                 |     
    0x0001f03e mov r4, r0                                                                                    |     r4 = r0;
    0x0001f040 mov r6, r1                                                                                    |     r6 = r1;
    0x0001f042 mov lr, r0                                                                                    |     lr = r0;
    0x0001f044 add ip, pc                                                                                    |     
    0x0001f046 mov r5, r2                                                                                    |     r5 = r2;
    0x0001f048 add.w ip, ip, 0x78                                                                            |     ip = 0x3e1a4;
    0x0001f04c ldr r7, [pc, 0x98]                                                                            |     
    0x0001f04e ldm.w ip!, {r0, r1, r2, r3}                                                                   |     r0 = *(ip!);
                                                                                                             |     r1 = *((ip! + 4));
                                                                                                             |     r2 = *((ip! + 8));
                                                                                                             |     r3 = *((ip! + 12));
    0x0001f052 add r7, pc                                                                                    |     r7 = 0x3e13e;
    0x0001f054 stm.w lr!, {r0, r1, r2, r3}                                                                   |     *(lr!) = r0;
                                                                                                             |     *((lr! + 4)) = r1;
                                                                                                             |     *((lr! + 8)) = r2;
                                                                                                             |     *((lr! + 12)) = r3;
    0x0001f058 ldr.w r3, [ip]                                                                                |     r3 = imp._ZTINSt6thread6_StateE;
    0x0001f05c str.w r3, [lr]                                                                                |     __asm ("str.w r3, [lr]");
    0x0001f060 ldrd r2, r3, [r6]                                                                             |     __asm ("ldrd r2, r3, [r6]");
    0x0001f064 strd r2, r3, [r4, 0x14]                                                                       |     __asm ("strd r2, r3, [r4, 0x14]");
                                                                                                             |     if (r3 != 0) {
    0x0001f068 cbz r3, 0x1f078                                                                               |         
    0x0001f06a ldr r2, [pc, 0x80]                                                                            |         r2 = *(0x1f0ee);
    0x0001f06c ldr r2, [r7, r2]                                                                              |         r2 = *((r7 + r2));
    0x0001f06e ldrb r2, [r2]                                                                                 |         r2 = *(r2);
                                                                                                             |         if (r2 == 0) {
    0x0001f070 cbz r2, 0x1f09a                                                                               |             goto label_2;
                                                                                                             |         }
    0x0001f072 ldr r2, [r3, 4]                                                                               |         r2 = *((r3 + 4));
    0x0001f074 adds r2, 1                                                                                    |         r2++;
    0x0001f076 str r2, [r3, 4]                                                                               |         *((r3 + 4)) = r2;
                                                                                                             |     }
                                                                                                             | label_0:
    0x0001f078 ldrd r2, r3, [r5]                                                                             |     __asm ("ldrd r2, r3, [r5]");
    0x0001f07c strd r2, r3, [r4, 0x1c]                                                                       |     __asm ("strd r2, r3, [r4, 0x1c]");
                                                                                                             |     if (r3 != 0) {
    0x0001f080 cbz r3, 0x1f090                                                                               |         
    0x0001f082 ldr r2, [pc, 0x68]                                                                            |         r2 = *(0x1f0ee);
    0x0001f084 ldr r2, [r7, r2]                                                                              |         r2 = *((r7 + r2));
    0x0001f086 ldrb r2, [r2]                                                                                 |         r2 = *(r2);
                                                                                                             |         if (r2 == 0) {
    0x0001f088 cbz r2, 0x1f0b4                                                                               |             goto label_3;
                                                                                                             |         }
    0x0001f08a ldr r2, [r3, 4]                                                                               |         r2 = *((r3 + 4));
    0x0001f08c adds r2, 1                                                                                    |         r2++;
    0x0001f08e str r2, [r3, 4]                                                                               |         *((r3 + 4)) = r2;
                                                                                                             |     }
                                                                                                             | label_1:
    0x0001f090 mov r0, r4                                                                                    |     r0 = r4;
    0x0001f092 blx 0xe8dc                                                                                    |     MQTTProperties_add ();
    0x0001f096 mov r0, r4                                                                                    |     r0 = r4;
    0x0001f098 pop {r3, r4, r5, r6, r7, pc}                                                                  |     
                                                                                                             | label_2:
    0x0001f09a adds r3, 4                                                                                    |     r3 += 4;
    0x0001f09c dmb ish                                                                                       |     __asm ("dmb ish");
                                                                                                             |     do {
    0x0001f0a0 ldrex r1, [r3]                                                                                |         __asm ("ldrex r1, [r3]");
    0x0001f0a4 adds r1, 1                                                                                    |         r1++;
    0x0001f0a6 strex r2, r1, [r3]                                                                            |         __asm ("strex r2, r1, [r3]");
    0x0001f0aa cmp r2, 0                                                                                     |         
    0x0001f0ac bne 0x1f0a0                                                                                   |         
                                                                                                             |     } while (r2 != 0);
    0x0001f0ae dmb ish                                                                                       |     __asm ("dmb ish");
    0x0001f0b2 b 0x1f078                                                                                     |     goto label_0;
                                                                                                             | label_3:
    0x0001f0b4 adds r3, 4                                                                                    |     r3 += 4;
    0x0001f0b6 dmb ish                                                                                       |     __asm ("dmb ish");
                                                                                                             |     do {
    0x0001f0ba ldrex r1, [r3]                                                                                |         __asm ("ldrex r1, [r3]");
    0x0001f0be adds r1, 1                                                                                    |         r1++;
    0x0001f0c0 strex r2, r1, [r3]                                                                            |         __asm ("strex r2, r1, [r3]");
    0x0001f0c4 cmp r2, 0                                                                                     |         
    0x0001f0c6 bne 0x1f0ba                                                                                   |         
                                                                                                             |     } while (r2 != 0);
    0x0001f0c8 dmb ish                                                                                       |     __asm ("dmb ish");
    0x0001f0cc b 0x1f090                                                                                     |     goto label_1;
                                                                                                             | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1ecf4 */
                                                                                     | #include <stdint.h>
                                                                                     |  
    ; (fcn) method.mqtt::connect_data.operator_mqtt::connect_data_const_ ()          | void method_mqtt::connect_data_operator_mqtt::connect_data_const_ (uint32_t arg1, int16_t arg2, uint32_t arg3) {
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
                                                                                     |     r2 = arg3;
                                                                                     |     /* mqtt::connect_data::operator=(mqtt::connect_data const&) */
    0x0001ecf4 push.w {r3, r4, r5, r6, r7, r8, sb, lr}                               |     
    0x0001ecf8 cmp r1, r0                                                            |     
    0x0001ecfa ldr.w r8, [pc, 0x184]                                                 |     
    0x0001ecfe mov r4, r0                                                            |     r4 = r0;
    0x0001ed00 add r8, pc                                                            |     r8 = 0x3db86;
                                                                                     |     if (r1 != r0) {
    0x0001ed02 beq 0x1edb4                                                           |         
    0x0001ed04 ldrd r3, r6, [r1, 0x14]                                               |         __asm ("ldrd r3, r6, [r1, 0x14]");
    0x0001ed08 mov r5, r1                                                            |         r5 = r1;
    0x0001ed0a ldr r7, [r0, 0x18]                                                    |         r7 = *((r0 + 0x18));
    0x0001ed0c str r3, [r0, 0x14]                                                    |         *((r0 + 0x14)) = r3;
    0x0001ed0e cmp r6, r7                                                            |         
                                                                                     |         if (r6 != r7) {
    0x0001ed10 beq 0x1ed5c                                                           |             
    0x0001ed12 cmp r6, 0                                                             |             
                                                                                     |             if (r6 == 0) {
    0x0001ed14 beq.w 0x1ee1a                                                         |                 goto label_8;
                                                                                     |             }
    0x0001ed18 ldr r3, [pc, 0x168]                                                   |             r3 = *(0x1ee84);
    0x0001ed1a ldr.w sb, [r8, r3]                                                    |             sb = *((r8 + r3));
    0x0001ed1e ldrb.w r3, [sb]                                                       |             r3 = *(sb);
    0x0001ed22 cmp r3, 0                                                             |             
                                                                                     |             if (r3 == 0) {
    0x0001ed24 beq 0x1ee00                                                           |                 goto label_9;
                                                                                     |             }
    0x0001ed26 ldr r3, [r6, 4]                                                       |             r3 = *((r6 + 4));
    0x0001ed28 adds r3, 1                                                            |             r3++;
    0x0001ed2a str r3, [r6, 4]                                                       |             *((r6 + 4)) = r3;
                                                                                     |             if (r7 != 0) {
    0x0001ed2c cbz r7, 0x1ed5a                                                       |                 
                                                                                     | label_4:
    0x0001ed2e ldr r3, [r7, 4]                                                       |                 r3 = *((r7 + 4));
    0x0001ed30 subs r2, r3, 1                                                        |                 r2 = r3 - 1;
    0x0001ed32 str r2, [r7, 4]                                                       |                 *((r7 + 4)) = r2;
                                                                                     | label_5:
    0x0001ed34 cmp r3, 1                                                             |                 
                                                                                     |                 if (r3 != 1) {
    0x0001ed36 bne 0x1ed5a                                                           |                     goto label_3;
                                                                                     |                 }
    0x0001ed38 ldr r3, [r7]                                                          |                 r3 = *(r7);
    0x0001ed3a mov r0, r7                                                            |                 r0 = r7;
    0x0001ed3c ldr r3, [r3, 8]                                                       |                 r3 = *((r3 + 8));
    0x0001ed3e blx r3                                                                |                 uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001ed40 ldrb.w r3, [sb]                                                       |                 r3 = *(sb);
    0x0001ed44 cmp r3, 0                                                             |                 
                                                                                     |                 if (r3 == 0) {
    0x0001ed46 beq 0x1ee46                                                           |                     goto label_10;
                                                                                     |                 }
    0x0001ed48 ldr r3, [r7, 8]                                                       |                 r3 = *((r7 + 8));
    0x0001ed4a subs r2, r3, 1                                                        |                 r2 = r3 - 1;
    0x0001ed4c str r2, [r7, 8]                                                       |                 *((r7 + 8)) = r2;
                                                                                     | label_6:
    0x0001ed4e cmp r3, 1                                                             |                 
                                                                                     |                 if (r3 != 1) {
    0x0001ed50 bne 0x1ed5a                                                           |                     goto label_3;
                                                                                     |                 }
    0x0001ed52 ldr r3, [r7]                                                          |                 r3 = *(r7);
    0x0001ed54 mov r0, r7                                                            |                 r0 = r7;
    0x0001ed56 ldr r3, [r3, 0xc]                                                     |                 r3 = *((r3 + 0xc));
    0x0001ed58 blx r3                                                                |                 uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                                     |             }
                                                                                     | label_3:
    0x0001ed5a str r6, [r4, 0x18]                                                    |             *((r4 + 0x18)) = r6;
                                                                                     |         }
    0x0001ed5c ldrd r3, r5, [r5, 0x1c]                                               |         __asm ("ldrd r3, r5, [r5, 0x1c]");
    0x0001ed60 ldr r6, [r4, 0x20]                                                    |         r6 = *((r4 + 0x20));
    0x0001ed62 str r3, [r4, 0x1c]                                                    |         *((r4 + 0x1c)) = r3;
    0x0001ed64 cmp r5, r6                                                            |         
                                                                                     |         if (r5 != r6) {
    0x0001ed66 beq 0x1edae                                                           |             
    0x0001ed68 cmp r5, 0                                                             |             
                                                                                     |             if (r5 == 0) {
    0x0001ed6a beq 0x1edd4                                                           |                 goto label_11;
                                                                                     |             }
    0x0001ed6c ldr r3, [pc, 0x114]                                                   |             r3 = *(0x1ee84);
    0x0001ed6e ldr.w sb, [r8, r3]                                                    |             sb = *((r8 + r3));
    0x0001ed72 ldrb.w r3, [sb]                                                       |             r3 = *(sb);
                                                                                     |             if (r3 == 0) {
    0x0001ed76 cbz r3, 0x1edba                                                       |                 goto label_12;
                                                                                     |             }
    0x0001ed78 ldr r3, [r5, 4]                                                       |             r3 = *((r5 + 4));
    0x0001ed7a adds r3, 1                                                            |             r3++;
    0x0001ed7c str r3, [r5, 4]                                                       |             *((r5 + 4)) = r3;
                                                                                     |             if (r6 != 0) {
    0x0001ed7e cbz r6, 0x1edac                                                       |                 
                                                                                     | label_1:
    0x0001ed80 ldr r3, [r6, 4]                                                       |                 r3 = *((r6 + 4));
    0x0001ed82 subs r2, r3, 1                                                        |                 r2 = r3 - 1;
    0x0001ed84 str r2, [r6, 4]                                                       |                 *((r6 + 4)) = r2;
                                                                                     | label_2:
    0x0001ed86 cmp r3, 1                                                             |                 
                                                                                     |                 if (r3 != 1) {
    0x0001ed88 bne 0x1edac                                                           |                     goto label_0;
                                                                                     |                 }
    0x0001ed8a ldr r3, [r6]                                                          |                 r3 = *(r6);
    0x0001ed8c mov r0, r6                                                            |                 r0 = r6;
    0x0001ed8e ldr r3, [r3, 8]                                                       |                 r3 = *((r3 + 8));
    0x0001ed90 blx r3                                                                |                 uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001ed92 ldrb.w r3, [sb]                                                       |                 r3 = *(sb);
    0x0001ed96 cmp r3, 0                                                             |                 
                                                                                     |                 if (r3 == 0) {
    0x0001ed98 beq 0x1ee62                                                           |                     goto label_13;
                                                                                     |                 }
    0x0001ed9a ldr r3, [r6, 8]                                                       |                 r3 = *((r6 + 8));
    0x0001ed9c subs r2, r3, 1                                                        |                 r2 = r3 - 1;
    0x0001ed9e str r2, [r6, 8]                                                       |                 *((r6 + 8)) = r2;
                                                                                     | label_7:
    0x0001eda0 cmp r3, 1                                                             |                 
                                                                                     |                 if (r3 != 1) {
    0x0001eda2 bne 0x1edac                                                           |                     goto label_0;
                                                                                     |                 }
    0x0001eda4 ldr r3, [r6]                                                          |                 r3 = *(r6);
    0x0001eda6 mov r0, r6                                                            |                 r0 = r6;
    0x0001eda8 ldr r3, [r3, 0xc]                                                     |                 r3 = *((r3 + 0xc));
    0x0001edaa blx r3                                                                |                 uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                                     |             }
                                                                                     | label_0:
    0x0001edac str r5, [r4, 0x20]                                                    |             *((r4 + 0x20)) = r5;
                                                                                     |         }
    0x0001edae mov r0, r4                                                            |         r0 = r4;
    0x0001edb0 blx 0xe8dc                                                            |         MQTTProperties_add ();
                                                                                     |     }
    0x0001edb4 mov r0, r4                                                            |     r0 = r4;
    0x0001edb6 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                |     
                                                                                     | label_12:
    0x0001edba adds r3, r5, 4                                                        |     r3 = r5 + 4;
    0x0001edbc dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0001edc0 ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x0001edc4 adds r1, 1                                                            |         r1++;
    0x0001edc6 strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x0001edca cmp r2, 0                                                             |         
    0x0001edcc bne 0x1edc0                                                           |         
                                                                                     |     } while (r2 != 0);
    0x0001edce dmb ish                                                               |     __asm ("dmb ish");
    0x0001edd2 ldr r6, [r4, 0x20]                                                    |     r6 = *((r4 + 0x20));
                                                                                     | label_11:
    0x0001edd4 cmp r6, 0                                                             |     
                                                                                     |     if (r6 == 0) {
    0x0001edd6 beq 0x1edac                                                           |         goto label_0;
                                                                                     |     }
    0x0001edd8 ldr r3, [pc, 0xa8]                                                    |     r3 = *(0x1ee84);
    0x0001edda ldr.w sb, [r8, r3]                                                    |     sb = *((r8 + r3));
    0x0001edde ldrb.w r3, [sb]                                                       |     r3 = *(sb);
    0x0001ede2 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0001ede4 bne 0x1ed80                                                           |         goto label_1;
                                                                                     |     }
    0x0001ede6 adds r2, r6, 4                                                        |     r2 = r6 + 4;
    0x0001ede8 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0001edec ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x0001edf0 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x0001edf2 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001edf6 cmp r0, 0                                                             |         
    0x0001edf8 bne 0x1edec                                                           |         
                                                                                     |     } while (r0 != 0);
    0x0001edfa dmb ish                                                               |     __asm ("dmb ish");
    0x0001edfe b 0x1ed86                                                             |     goto label_2;
                                                                                     | label_9:
    0x0001ee00 adds r3, r6, 4                                                        |     r3 = r6 + 4;
    0x0001ee02 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0001ee06 ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x0001ee0a adds r1, 1                                                            |         r1++;
    0x0001ee0c strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x0001ee10 cmp r2, 0                                                             |         
    0x0001ee12 bne 0x1ee06                                                           |         
                                                                                     |     } while (r2 != 0);
    0x0001ee14 dmb ish                                                               |     __asm ("dmb ish");
    0x0001ee18 ldr r7, [r4, 0x18]                                                    |     r7 = *((r4 + 0x18));
                                                                                     | label_8:
    0x0001ee1a cmp r7, 0                                                             |     
                                                                                     |     if (r7 == 0) {
    0x0001ee1c beq 0x1ed5a                                                           |         goto label_3;
                                                                                     |     }
    0x0001ee1e ldr r3, [pc, 0x64]                                                    |     r3 = *(0x1ee86);
    0x0001ee20 ldr.w sb, [r8, r3]                                                    |     sb = *((r8 + r3));
    0x0001ee24 ldrb.w r3, [sb]                                                       |     r3 = *(sb);
    0x0001ee28 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0001ee2a bne 0x1ed2e                                                           |         goto label_4;
                                                                                     |     }
    0x0001ee2c adds r2, r7, 4                                                        |     r2 = r7 + 4;
    0x0001ee2e dmb ish                                                               |     __asm ("dmb ish");
    0x0001ee30 ldrh r3, [r3, 0x3a]                                                   |     r3 = *((r3 + 0x3a));
                                                                                     |     do {
    0x0001ee32 ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x0001ee36 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x0001ee38 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001ee3c cmp r0, 0                                                             |         
    0x0001ee3e bne 0x1ee32                                                           |         
                                                                                     |     } while (r0 != 0);
    0x0001ee40 dmb ish                                                               |     __asm ("dmb ish");
    0x0001ee44 b 0x1ed34                                                             |     goto label_5;
                                                                                     | label_10:
    0x0001ee46 add.w r2, r7, 8                                                       |     r2 = r7 + 8;
    0x0001ee4a dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0001ee4e ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x0001ee52 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x0001ee54 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001ee58 cmp r0, 0                                                             |         
    0x0001ee5a bne 0x1ee4e                                                           |         
                                                                                     |     } while (r0 != 0);
    0x0001ee5c dmb ish                                                               |     __asm ("dmb ish");
    0x0001ee60 b 0x1ed4e                                                             |     goto label_6;
                                                                                     | label_13:
    0x0001ee62 add.w r2, r6, 8                                                       |     r2 = r6 + 8;
    0x0001ee66 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0001ee6a ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x0001ee6e subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x0001ee70 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001ee74 cmp r0, 0                                                             |         
    0x0001ee76 bne 0x1ee6a                                                           |         
                                                                                     |     } while (r0 != 0);
    0x0001ee78 dmb ish                                                               |     __asm ("dmb ish");
    0x0001ee7c b 0x1eda0                                                             |     goto label_7;
                                                                                     | }
    ; assembly                                                                                                       | /* r2dec pseudo code output */
                                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1f0f0 */
                                                                                                                     | #include <stdint.h>
                                                                                                                     |  
    ; (fcn) method.mqtt::connect_options.connect_options_mqtt::buffer_ref_char___mqtt::buffer_ref_char__ ()          | void method_mqtt::connect_options_connect_options_mqtt::buffer_ref_char_mqtt::buffer_ref_char_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                                     |     int16_t var_4h;
                                                                                                                     |     int16_t var_8h;
                                                                                                                     |     int16_t var_ch;
                                                                                                                     |     r0 = arg1;
                                                                                                                     |     r1 = arg2;
                                                                                                                     |     r2 = arg3;
                                                                                                                     |     /* mqtt::connect_options::connect_options(mqtt::buffer_ref<char>, mqtt::buffer_ref<char>) */
    0x0001f0f0 push.w {r4, r5, r6, r7, r8, sb, lr}                                                                   |     
    0x0001f0f4 mov r5, r2                                                                                            |     r5 = r2;
    0x0001f0f6 ldr r2, [pc, 0x1bc]                                                                                   |     
    0x0001f0f8 sub sp, 0x14                                                                                          |     
    0x0001f0fa mov r6, r1                                                                                            |     r6 = r1;
    0x0001f0fc mov r4, r0                                                                                            |     r4 = r0;
    0x0001f0fe ldr r3, [pc, 0x1b8]                                                                                   |     r3 = *(0x1f2ba);
    0x0001f100 add r2, pc                                                                                            |     r2 = 0x3e3ba;
    0x0001f102 ldr r3, [r2, r3]                                                                                      |     
    0x0001f104 ldr r3, [r3]                                                                                          |     r3 = imp._ZTINSt6thread6_StateE;
    0x0001f106 str r3, [sp, 0xc]                                                                                     |     var_ch = r3;
    0x0001f108 mov.w r3, 0                                                                                           |     r3 = 0;
    0x0001f10c blx 0xe854                                                                                            |     fcn_0000e854 ();
    0x0001f110 ldrd r2, r3, [r6]                                                                                     |     __asm ("ldrd r2, r3, [r6]");
    0x0001f114 ldr r6, [pc, 0x1a4]                                                                                   |     
    0x0001f116 strd r2, r3, [sp, 4]                                                                                  |     __asm ("strd r2, r3, [var_4h]");
    0x0001f11a add r6, pc                                                                                            |     r6 = 0x3e3da;
                                                                                                                     |     if (r3 != 0) {
    0x0001f11c cbz r3, 0x1f130                                                                                       |         
    0x0001f11e ldr r2, [pc, 0x1a0]                                                                                   |         r2 = *(0x1f2c2);
    0x0001f120 ldr r2, [r6, r2]                                                                                      |         r2 = *((r6 + r2));
    0x0001f122 ldrb r2, [r2]                                                                                         |         r2 = *(r2);
    0x0001f124 cmp r2, 0                                                                                             |         
                                                                                                                     |         if (r2 == 0) {
    0x0001f126 beq.w 0x1f22e                                                                                         |             goto label_8;
                                                                                                                     |         }
    0x0001f12a ldr r2, [r3, 4]                                                                                       |         r2 = *((r3 + 4));
    0x0001f12c adds r2, 1                                                                                            |         r2++;
    0x0001f12e str r2, [r3, 4]                                                                                       |         *((r3 + 4)) = r2;
                                                                                                                     |     }
                                                                                                                     | label_4:
    0x0001f130 add.w r8, sp, 4                                                                                       |     r8 += var_4h;
    0x0001f134 mov r0, r4                                                                                            |     r0 = r4;
    0x0001f136 mov r1, r8                                                                                            |     r1 = r8;
    0x0001f138 blx 0xec88                                                                                            |     fcn_0000ec88 ();
    0x0001f13c ldr r7, [sp, 8]                                                                                       |     r7 = var_8h;
                                                                                                                     |     if (r7 == 0) {
    0x0001f13e cbz r7, 0x1f158                                                                                       |         goto label_0;
                                                                                                                     |     }
    0x0001f140 ldr r3, [pc, 0x17c]                                                                                   |     r3 = *(0x1f2c0);
    0x0001f142 ldr.w sb, [r6, r3]                                                                                    |     sb = *((r6 + r3));
    0x0001f146 ldrb.w r3, [sb]                                                                                       |     r3 = *(sb);
    0x0001f14a cmp r3, 0                                                                                             |     
                                                                                                                     |     if (r3 == 0) {
    0x0001f14c beq 0x1f248                                                                                           |         goto label_9;
                                                                                                                     |     }
    0x0001f14e ldr r3, [r7, 4]                                                                                       |     r3 = *((r7 + 4));
    0x0001f150 subs r2, r3, 1                                                                                        |     r2 = r3 - 1;
    0x0001f152 str r2, [r7, 4]                                                                                       |     *((r7 + 4)) = r2;
                                                                                                                     | label_5:
    0x0001f154 cmp r3, 1                                                                                             |     
    0x0001f156 beq 0x1f1b2                                                                                           |     
                                                                                                                     |     while (r3 != 1) {
                                                                                                                     | label_0:
    0x0001f158 ldrd r2, r3, [r5]                                                                                     |         __asm ("ldrd r2, r3, [r5]");
    0x0001f15c strd r2, r3, [sp, 4]                                                                                  |         __asm ("strd r2, r3, [var_4h]");
                                                                                                                     |         if (r3 != 0) {
    0x0001f160 cbz r3, 0x1f172                                                                                       |             
    0x0001f162 ldr r2, [pc, 0x15c]                                                                                   |             r2 = *(0x1f2c2);
    0x0001f164 ldr r2, [r6, r2]                                                                                      |             r2 = *((r6 + r2));
    0x0001f166 ldrb r2, [r2]                                                                                         |             r2 = *(r2);
    0x0001f168 cmp r2, 0                                                                                             |             
                                                                                                                     |             if (r2 == 0) {
    0x0001f16a beq 0x1f1fa                                                                                           |                 goto label_10;
                                                                                                                     |             }
    0x0001f16c ldr r2, [r3, 4]                                                                                       |             r2 = *((r3 + 4));
    0x0001f16e adds r2, 1                                                                                            |             r2++;
    0x0001f170 str r2, [r3, 4]                                                                                       |             *((r3 + 4)) = r2;
                                                                                                                     |         }
                                                                                                                     | label_2:
    0x0001f172 mov r1, r8                                                                                            |         r1 = r8;
    0x0001f174 mov r0, r4                                                                                            |         r0 = r4;
    0x0001f176 blx 0xecc4                                                                                            |         fcn_0000ecc4 ();
    0x0001f17a ldr r5, [sp, 8]                                                                                       |         r5 = var_8h;
                                                                                                                     |         if (r5 != 0) {
    0x0001f17c cbz r5, 0x1f196                                                                                       |             
    0x0001f17e ldr r3, [pc, 0x140]                                                                                   |             r3 = *(0x1f2c2);
    0x0001f180 ldr.w sb, [r6, r3]                                                                                    |             sb = *((r6 + r3));
    0x0001f184 ldrb.w r3, [sb]                                                                                       |             r3 = *(sb);
    0x0001f188 cmp r3, 0                                                                                             |             
                                                                                                                     |             if (r3 == 0) {
    0x0001f18a beq 0x1f214                                                                                           |                 goto label_11;
                                                                                                                     |             }
    0x0001f18c ldr r3, [r5, 4]                                                                                       |             r3 = *((r5 + 4));
    0x0001f18e subs r2, r3, 1                                                                                        |             r2 = r3 - 1;
    0x0001f190 str r2, [r5, 4]                                                                                       |             *((r5 + 4)) = r2;
                                                                                                                     | label_3:
    0x0001f192 cmp r3, 1                                                                                             |             
                                                                                                                     |             if (r3 == 1) {
    0x0001f194 beq 0x1f1d6                                                                                           |                 goto label_12;
                                                                                                                     |             }
                                                                                                                     |         }
                                                                                                                     | label_1:
    0x0001f196 ldr r2, [pc, 0x12c]                                                                                   |         
    0x0001f198 ldr r3, [pc, 0x11c]                                                                                   |         r3 = *(0x1f2b8);
    0x0001f19a add r2, pc                                                                                            |         r2 = 0x3e464;
    0x0001f19c ldr r3, [r2, r3]                                                                                      |         r3 = imp._ZTINSt6thread6_StateE;
    0x0001f19e ldr r2, [r3]                                                                                          |         r2 = imp._ZTINSt6thread6_StateE;
    0x0001f1a0 ldr r3, [sp, 0xc]                                                                                     |         r3 = var_ch;
    0x0001f1a2 eors r2, r3                                                                                           |         r2 ^= r3;
    0x0001f1a4 mov.w r3, 0                                                                                           |         r3 = 0;
                                                                                                                     |         if (r2 != r3) {
    0x0001f1a8 bne 0x1f29a                                                                                           |             goto label_13;
                                                                                                                     |         }
    0x0001f1aa mov r0, r4                                                                                            |         r0 = r4;
    0x0001f1ac add sp, 0x14                                                                                          |         
    0x0001f1ae pop.w {r4, r5, r6, r7, r8, sb, pc}                                                                    |         
    0x0001f1b2 ldr r3, [r7]                                                                                          |         r3 = *(r7);
    0x0001f1b4 mov r0, r7                                                                                            |         r0 = r7;
    0x0001f1b6 ldr r3, [r3, 8]                                                                                       |         r3 = *((r3 + 8));
    0x0001f1b8 blx r3                                                                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001f1ba ldrb.w r3, [sb]                                                                                       |         r3 = *(sb);
    0x0001f1be cmp r3, 0                                                                                             |         
                                                                                                                     |         if (r3 == 0) {
    0x0001f1c0 beq 0x1f27e                                                                                           |             goto label_14;
                                                                                                                     |         }
    0x0001f1c2 ldr r3, [r7, 8]                                                                                       |         r3 = *((r7 + 8));
    0x0001f1c4 subs r2, r3, 1                                                                                        |         r2 = r3 - 1;
    0x0001f1c6 str r2, [r7, 8]                                                                                       |         *((r7 + 8)) = r2;
                                                                                                                     | label_7:
    0x0001f1c8 cmp r3, 1                                                                                             |         
    0x0001f1ca bne 0x1f158                                                                                           |         
                                                                                                                     |     }
    0x0001f1cc ldr r3, [r7]                                                                                          |     r3 = *(r7);
    0x0001f1ce mov r0, r7                                                                                            |     r0 = r7;
    0x0001f1d0 ldr r3, [r3, 0xc]                                                                                     |     r3 = *((r3 + 0xc));
    0x0001f1d2 blx r3                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001f1d4 b 0x1f158                                                                                             |     goto label_0;
                                                                                                                     | label_12:
    0x0001f1d6 ldr r3, [r5]                                                                                          |     r3 = *(r5);
    0x0001f1d8 mov r0, r5                                                                                            |     r0 = r5;
    0x0001f1da ldr r3, [r3, 8]                                                                                       |     r3 = *((r3 + 8));
    0x0001f1dc blx r3                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001f1de ldrb.w r3, [sb]                                                                                       |     r3 = *(sb);
    0x0001f1e2 cmp r3, 0                                                                                             |     
                                                                                                                     |     if (r3 == 0) {
    0x0001f1e4 beq 0x1f262                                                                                           |         goto label_15;
                                                                                                                     |     }
    0x0001f1e6 ldr r3, [r5, 8]                                                                                       |     r3 = *((r5 + 8));
    0x0001f1e8 subs r2, r3, 1                                                                                        |     r2 = r3 - 1;
    0x0001f1ea str r2, [r5, 8]                                                                                       |     *((r5 + 8)) = r2;
                                                                                                                     | label_6:
    0x0001f1ec cmp r3, 1                                                                                             |     
                                                                                                                     |     if (r3 != 1) {
    0x0001f1ee bne 0x1f196                                                                                           |         goto label_1;
                                                                                                                     |     }
    0x0001f1f0 ldr r3, [r5]                                                                                          |     r3 = *(r5);
    0x0001f1f2 mov r0, r5                                                                                            |     r0 = r5;
    0x0001f1f4 ldr r3, [r3, 0xc]                                                                                     |     r3 = *((r3 + 0xc));
    0x0001f1f6 blx r3                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001f1f8 b 0x1f196                                                                                             |     goto label_1;
                                                                                                                     | label_10:
    0x0001f1fa adds r3, 4                                                                                            |     r3 += 4;
    0x0001f1fc dmb ish                                                                                               |     __asm ("dmb ish");
                                                                                                                     |     do {
    0x0001f200 ldrex r1, [r3]                                                                                        |         __asm ("ldrex r1, [r3]");
    0x0001f204 adds r1, 1                                                                                            |         r1++;
    0x0001f206 strex r2, r1, [r3]                                                                                    |         __asm ("strex r2, r1, [r3]");
    0x0001f20a cmp r2, 0                                                                                             |         
    0x0001f20c bne 0x1f200                                                                                           |         
                                                                                                                     |     } while (r2 != 0);
    0x0001f20e dmb ish                                                                                               |     __asm ("dmb ish");
    0x0001f212 b 0x1f172                                                                                             |     goto label_2;
                                                                                                                     | label_11:
    0x0001f214 adds r2, r5, 4                                                                                        |     r2 = r5 + 4;
    0x0001f216 dmb ish                                                                                               |     __asm ("dmb ish");
                                                                                                                     |     do {
    0x0001f21a ldrex r3, [r2]                                                                                        |         __asm ("ldrex r3, [r2]");
    0x0001f21e subs r1, r3, 1                                                                                        |         r1 = r3 - 1;
    0x0001f220 strex r0, r1, [r2]                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001f224 cmp r0, 0                                                                                             |         
    0x0001f226 bne 0x1f21a                                                                                           |         
                                                                                                                     |     } while (r0 != 0);
    0x0001f228 dmb ish                                                                                               |     __asm ("dmb ish");
    0x0001f22c b 0x1f192                                                                                             |     goto label_3;
                                                                                                                     | label_8:
    0x0001f22e adds r3, 4                                                                                            |     r3 += 4;
    0x0001f230 dmb ish                                                                                               |     __asm ("dmb ish");
                                                                                                                     |     do {
    0x0001f234 ldrex r1, [r3]                                                                                        |         __asm ("ldrex r1, [r3]");
    0x0001f238 adds r1, 1                                                                                            |         r1++;
    0x0001f23a strex r2, r1, [r3]                                                                                    |         __asm ("strex r2, r1, [r3]");
    0x0001f23e cmp r2, 0                                                                                             |         
    0x0001f240 bne 0x1f234                                                                                           |         
                                                                                                                     |     } while (r2 != 0);
    0x0001f242 dmb ish                                                                                               |     __asm ("dmb ish");
    0x0001f246 b 0x1f130                                                                                             |     goto label_4;
                                                                                                                     | label_9:
    0x0001f248 adds r2, r7, 4                                                                                        |     r2 = r7 + 4;
    0x0001f24a dmb ish                                                                                               |     __asm ("dmb ish");
                                                                                                                     |     do {
    0x0001f24e ldrex r3, [r2]                                                                                        |         __asm ("ldrex r3, [r2]");
    0x0001f252 subs r1, r3, 1                                                                                        |         r1 = r3 - 1;
    0x0001f254 strex r0, r1, [r2]                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001f258 cmp r0, 0                                                                                             |         
    0x0001f25a bne 0x1f24e                                                                                           |         
                                                                                                                     |     } while (r0 != 0);
    0x0001f25c dmb ish                                                                                               |     __asm ("dmb ish");
    0x0001f260 b 0x1f154                                                                                             |     goto label_5;
                                                                                                                     | label_15:
    0x0001f262 add.w r2, r5, 8                                                                                       |     r2 = r5 + 8;
    0x0001f266 dmb ish                                                                                               |     __asm ("dmb ish");
                                                                                                                     |     do {
    0x0001f26a ldrex r3, [r2]                                                                                        |         __asm ("ldrex r3, [r2]");
    0x0001f26e subs r1, r3, 1                                                                                        |         r1 = r3 - 1;
    0x0001f270 strex r0, r1, [r2]                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001f274 cmp r0, 0                                                                                             |         
    0x0001f276 bne 0x1f26a                                                                                           |         
                                                                                                                     |     } while (r0 != 0);
    0x0001f278 dmb ish                                                                                               |     __asm ("dmb ish");
    0x0001f27c b 0x1f1ec                                                                                             |     goto label_6;
                                                                                                                     | label_14:
    0x0001f27e add.w r2, r7, 8                                                                                       |     r2 = r7 + 8;
    0x0001f282 dmb ish                                                                                               |     __asm ("dmb ish");
                                                                                                                     |     do {
    0x0001f286 ldrex r3, [r2]                                                                                        |         __asm ("ldrex r3, [r2]");
    0x0001f28a subs r1, r3, 1                                                                                        |         r1 = r3 - 1;
    0x0001f28c strex r0, r1, [r2]                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x0001f290 cmp r0, 0                                                                                             |         
    0x0001f292 bne 0x1f286                                                                                           |         
                                                                                                                     |     } while (r0 != 0);
    0x0001f294 dmb ish                                                                                               |     __asm ("dmb ish");
    0x0001f298 b 0x1f1c8                                                                                             |     goto label_7;
                                                                                                                     | label_13:
    0x0001f29a blx 0xea48                                                                                            |     fcn_0000ea48 ();
                                                                                                                     |     do {
    0x0001f29e ldr r0, [sp, 8]                                                                                       |         r0 = var_8h;
                                                                                                                     |         if (r0 != 0) {
    0x0001f2a0 cbz r0, 0x1f2a6                                                                                       |             
    0x0001f2a2 bl 0x18a84                                                                                            |             fcn_00018a84 (r0);
                                                                                                                     |         }
    0x0001f2a6 mov r0, r4                                                                                            |         r0 = r4;
    0x0001f2a8 bl 0x17bb0                                                                                            |         r0 = fcn_00017bb0 (r0);
    0x0001f2ac blx 0xea54                                                                                            |         fcn_0000ea54 ();
    0x0001f2b0 b 0x1f29e                                                                                             |         
                                                                                                                     |     } while (1);
                                                                                                                     | }
    ; assembly                                                                                   | /* r2dec pseudo code output */
                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1f510 */
                                                                                                 | #include <stdint.h>
                                                                                                 |  
    ; (fcn) method.mqtt::connect_options.connect_options_mqtt::connect_options_const_ ()         | void method_mqtt::connect_options_connect_options_mqtt::connect_options_const_ (int16_t arg1, int16_t arg2) {
                                                                                                 |     int16_t var_0h;
                                                                                                 |     int16_t var_4h;
                                                                                                 |     int16_t var_8h;
                                                                                                 |     int16_t var_ch;
                                                                                                 |     r0 = arg1;
                                                                                                 |     r1 = arg2;
                                                                                                 |     /* mqtt::connect_options::connect_options(mqtt::connect_options const&) */
    0x0001f510 ldr r2, [pc, 0x320]                                                               |     
    0x0001f512 ldr r3, [pc, 0x324]                                                               |     r3 = *(0x1f83a);
    0x0001f514 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                       |     
    0x0001f516 ldr r7, [pc, 0x3c0]                                                               |     r7 = *(0x1f8da);
    0x0001f518 mov r4, r0                                                                        |     r4 = r0;
    0x0001f51a add r2, pc                                                                        |     r2 = 0x3ed52;
    0x0001f51c sub sp, 0x14                                                                      |     
    0x0001f51e add.w r8, r4, 0x78                                                                |     r8 = r4 + 0x78;
    0x0001f522 mov r5, r1                                                                        |     r5 = r1;
    0x0001f524 ldr r3, [r2, r3]                                                                  |     
    0x0001f526 movs r2, 0x78                                                                     |     r2 = 0x78;
    0x0001f528 ldr r6, [pc, 0x310]                                                               |     
    0x0001f52a add.w sb, r4, 0xb8                                                                |     sb = r4 + 0xb8;
    0x0001f52e ldr r3, [r3]                                                                      |     r3 = *(0x3ed52);
    0x0001f530 str r3, [sp, 0xc]                                                                 |     var_ch = r3;
    0x0001f532 mov.w r3, 0                                                                       |     r3 = 0;
    0x0001f536 blx 0xebf8                                                                        |     fcn_0000ebf8 ();
    0x0001f53a mov r0, r8                                                                        |     r0 = r8;
    0x0001f53c add r6, pc                                                                        |     r6 = 0x3ed7c;
    0x0001f53e blx 0xec4c                                                                        |     fcn_0000ec4c ();
    0x0001f542 mov r0, sb                                                                        |     r0 = sb;
    0x0001f544 blx 0xebc4                                                                        |     fcn_0000ebc4 ();
    0x0001f548 ldrd r2, r3, [r5, 0x1c8]                                                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001f54c strd r2, r3, [r4, 0x1c8]                                                          |     __asm ("strd r2, r3, aav.0x000000ff");
                                                                                                 |     if (r3 != 0) {
    0x0001f550 cbz r3, 0x1f564                                                                   |         
    0x0001f552 ldr r2, [pc, 0x2ec]                                                               |         r2 = *(0x1f842);
    0x0001f554 ldr r2, [r6, r2]                                                                  |         r2 = *((r6 + r2));
    0x0001f556 ldrb r2, [r2]                                                                     |         r2 = *(r2);
    0x0001f558 cmp r2, 0                                                                         |         
                                                                                                 |         if (r2 == 0) {
    0x0001f55a beq.w 0x1f736                                                                     |             goto label_7;
                                                                                                 |         }
    0x0001f55e ldr r2, [r3, 4]                                                                   |         r2 = *((r3 + 4));
    0x0001f560 adds r2, 1                                                                        |         r2++;
    0x0001f562 str r2, [r3, 4]                                                                   |         *((r3 + 4)) = r2;
                                                                                                 |     }
                                                                                                 | label_2:
    0x0001f564 ldrd r2, r3, [r5, 0x1d0]                                                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001f568 strd r2, r3, [r4, 0x1d0]                                                          |     __asm ("strd r2, r3, aav.0x000000ff");
                                                                                                 |     if (r3 != 0) {
    0x0001f56c cbz r3, 0x1f580                                                                   |         
    0x0001f56e ldr r2, [pc, 0x2d0]                                                               |         r2 = *(0x1f842);
    0x0001f570 ldr r2, [r6, r2]                                                                  |         r2 = *((r6 + r2));
    0x0001f572 ldrb r2, [r2]                                                                     |         r2 = *(r2);
    0x0001f574 cmp r2, 0                                                                         |         
                                                                                                 |         if (r2 == 0) {
    0x0001f576 beq.w 0x1f76a                                                                     |             goto label_8;
                                                                                                 |         }
    0x0001f57a ldr r2, [r3, 4]                                                                   |         r2 = *((r3 + 4));
    0x0001f57c adds r2, 1                                                                        |         r2++;
    0x0001f57e str r2, [r3, 4]                                                                   |         *((r3 + 4)) = r2;
                                                                                                 |     }
                                                                                                 | label_4:
    0x0001f580 ldrd r2, r3, [r5, 0x1d8]                                                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001f584 strd r2, r3, [r4, 0x1d8]                                                          |     __asm ("strd r2, r3, aav.0x000000ff");
                                                                                                 |     if (r3 != 0) {
    0x0001f588 cbz r3, 0x1f59c                                                                   |         
    0x0001f58a ldr r2, [pc, 0x2b4]                                                               |         r2 = *(0x1f842);
    0x0001f58c ldr r2, [r6, r2]                                                                  |         r2 = *((r6 + r2));
    0x0001f58e ldrb r2, [r2]                                                                     |         r2 = *(r2);
    0x0001f590 cmp r2, 0                                                                         |         
                                                                                                 |         if (r2 == 0) {
    0x0001f592 beq.w 0x1f784                                                                     |             goto label_9;
                                                                                                 |         }
    0x0001f594 strh r7, [r6, 6]                                                                  |         *((r6 + 6)) = r7;
    0x0001f596 ldr r2, [r3, 4]                                                                   |         r2 = *((r3 + 4));
    0x0001f598 adds r2, 1                                                                        |         r2++;
    0x0001f59a str r2, [r3, 4]                                                                   |         *((r3 + 4)) = r2;
                                                                                                 |     }
                                                                                                 | label_5:
    0x0001f59c ldrd r2, r3, [r5, 0x1e0]                                                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001f5a0 strd r2, r3, [r4, 0x1e0]                                                          |     __asm ("strd r2, r3, aav.0x000000ff");
                                                                                                 |     if (r3 != 0) {
    0x0001f5a4 cbz r3, 0x1f5b8                                                                   |         
    0x0001f5a6 ldr r2, [pc, 0x298]                                                               |         r2 = *(0x1f842);
    0x0001f5a8 ldr r2, [r6, r2]                                                                  |         r2 = *((r6 + r2));
    0x0001f5aa ldrb r2, [r2]                                                                     |         r2 = *(r2);
    0x0001f5ac cmp r2, 0                                                                         |         
                                                                                                 |         if (r2 == 0) {
    0x0001f5ae beq.w 0x1f750                                                                     |             goto label_10;
                                                                                                 |         }
    0x0001f5b2 ldr r2, [r3, 4]                                                                   |         r2 = *((r3 + 4));
    0x0001f5b4 adds r2, 1                                                                        |         r2++;
    0x0001f5b6 str r2, [r3, 4]                                                                   |         *((r3 + 4)) = r2;
                                                                                                 |     }
                                                                                                 | label_3:
    0x0001f5b8 add.w sl, r4, 0x1e8                                                               |     sl = r4 + 0x1e8;
    0x0001f5bc add.w r1, r5, 0x1e8                                                               |     r1 = r5 + 0x1e8;
    0x0001f5c0 mov r0, sl                                                                        |     r0 = sl;
    0x0001f5c2 blx 0xeb24                                                                        |     fcn_0000eb24 ();
    0x0001f5c6 movs r3, 0                                                                        |     r3 = 0;
    0x0001f5c8 add.w r1, r4, 0x1fc                                                               |     r1 = r4 + 0x1fc;
    0x0001f5cc strd r3, r3, [r4, 0x1fc]                                                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x0001f5d0 add.w fp, r4, 0x1f8                                                               |     
    0x0001f5d4 ldr.w r0, [r5, 0x200]                                                             |     r0 = *((r5 + 0x200));
    0x0001f5d8 str.w r3, [r4, 0x20c]                                                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0001f5dc strd r1, r1, [r4, 0x204]                                                          |     __asm ("strd r1, r1, aav.0x000000ff");
                                                                                                 |     if (r0 == 0) {
    0x0001f5e0 cbz r0, 0x1f60e                                                                   |         goto label_11;
                                                                                                 |     }
    0x0001f5e2 bl 0x1d830                                                                        |     r0 = fcn_0001d830 (r0, r1);
    0x0001f5e6 mov r3, r0                                                                        |     r3 = r0;
                                                                                                 |     do {
    0x0001f5e8 mov r2, r3                                                                        |         r2 = r3;
    0x0001f5ea ldr r3, [r3, 8]                                                                   |         r3 = *((r3 + 8));
    0x0001f5ec cmp r3, 0                                                                         |         
    0x0001f5ee bne 0x1f5e8                                                                       |         
                                                                                                 |     } while (r3 != 0);
    0x0001f5f0 mov r3, r0                                                                        |     r3 = r0;
    0x0001f5f2 str.w r2, [r4, 0x204]                                                             |     __asm ("str.w r2, aav.0x000000ff");
                                                                                                 |     do {
    0x0001f5f6 mov r2, r3                                                                        |         r2 = r3;
    0x0001f5f8 ldr r3, [r3, 0xc]                                                                 |         r3 = *((r3 + 0xc));
    0x0001f5fa cmp r3, 0                                                                         |         
    0x0001f5fc bne 0x1f5f6                                                                       |         
                                                                                                 |     } while (r3 != 0);
    0x0001f5fe ldr.w r3, [r5, 0x20c]                                                             |     r3 = *((r5 + 0x20c));
    0x0001f602 str.w r2, [r4, 0x208]                                                             |     __asm ("str.w r2, aav.0x000000ff");
    0x0001f606 str.w r0, [r4, 0x200]                                                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0001f60a str.w r3, [r4, 0x20c]                                                             |     __asm ("str.w r3, aav.0x000000ff");
                                                                                                 | label_11:
    0x0001f60e movs r3, 0                                                                        |     r3 = 0;
    0x0001f610 mov r0, fp                                                                        |     r0 = fp;
    0x0001f612 strd r3, r3, [r4, 0x210]                                                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x0001f616 str.w r3, [r4, 0x218]                                                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0001f61a blx 0xedf0                                                                        |     fcn_0000edf0 ();
    0x0001f61e add.w r3, r4, 0x224                                                               |     r3 = r4 + 0x224;
    0x0001f622 ldr.w r6, [r5, 0x220]                                                             |     r6 = *((r5 + 0x220));
    0x0001f626 str.w r3, [r4, 0x21c]                                                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0001f62a add.w r0, r4, 0x21c                                                               |     r0 = r4 + 0x21c;
    0x0001f62e ldr.w r7, [r5, 0x21c]                                                             |     r7 = *((r5 + 0x21c));
    0x0001f632 str r3, [sp]                                                                      |     *(sp) = r3;
    0x0001f634 rsbs r3, r6, 0                                                                    |     r3 = r6 - ;
    0x0001f636 clz r2, r7                                                                        |     r2 &= r7;
    0x0001f63a cmp r7, r3                                                                        |     
    0x0001f63c lsr.w r2, r2, 5                                                                   |     r2 >>= 5;
    0x0001f640 it eq                                                                             |     
                                                                                                 |     if (r7 != r3) {
    0x0001f642 moveq r2, 0                                                                       |         r2 = 0;
                                                                                                 |     }
    0x0001f644 cmp r2, 0                                                                         |     
                                                                                                 |     if (r2 != 0) {
    0x0001f646 bne.w 0x1f7a2                                                                     |         goto label_12;
                                                                                                 |     }
    0x0001f64a cmp r6, 0xf                                                                       |     
    0x0001f64c str r6, [sp, 8]                                                                   |     var_8h = r6;
                                                                                                 |     if (r6 > 0xf) {
    0x0001f64e bhi 0x1f716                                                                       |         goto label_13;
                                                                                                 |     }
    0x0001f650 cmp r6, 1                                                                         |     
                                                                                                 |     if (r6 != 1) {
    0x0001f652 bne 0x1f6e2                                                                       |         goto label_14;
                                                                                                 |     }
    0x0001f654 ldr r2, [sp]                                                                      |     r2 = *(sp);
    0x0001f656 ldrb r3, [r7]                                                                     |     r3 = *(r7);
    0x0001f658 strb.w r3, [r4, 0x224]                                                            |     *((r4 + 0x224)) = r3;
                                                                                                 |     do {
                                                                                                 | label_1:
    0x0001f65c movs r3, 0                                                                        |         r3 = 0;
    0x0001f65e str.w r6, [r4, 0x220]                                                             |         __asm ("str.w r6, aav.0x000000ff");
    0x0001f662 strb r3, [r2, r6]                                                                 |         *((r2 + r6)) = r3;
    0x0001f664 add.w r3, r4, 0x23c                                                               |         r3 = r4 + 0x23c;
    0x0001f668 str.w r3, [r4, 0x234]                                                             |         __asm ("str.w r3, aav.0x000000ff");
    0x0001f66c add.w r0, r4, 0x234                                                               |         r0 = r4 + 0x234;
    0x0001f670 ldrd r7, r6, [r5, 0x234]                                                          |         __asm ("ldrd r7, r6, aav.0x000000ff");
    0x0001f674 str r3, [sp, 4]                                                                   |         var_4h = r3;
    0x0001f676 clz r2, r7                                                                        |         r2 &= r7;
    0x0001f67a rsbs r3, r6, 0                                                                    |         r3 = r6 - ;
    0x0001f67c lsrs r2, r2, 5                                                                    |         r2 >>= 5;
    0x0001f67e cmp r7, r3                                                                        |         
    0x0001f680 it eq                                                                             |         
                                                                                                 |         if (r7 != r3) {
    0x0001f682 moveq r2, 0                                                                       |             r2 = 0;
                                                                                                 |         }
    0x0001f684 cmp r2, 0                                                                         |         
                                                                                                 |         if (r2 != 0) {
    0x0001f686 bne.w 0x1f7aa                                                                     |             goto label_15;
                                                                                                 |         }
    0x0001f68a cmp r6, 0xf                                                                       |         
    0x0001f68c str r6, [sp, 8]                                                                   |         var_8h = r6;
                                                                                                 |         if (r6 > 0xf) {
    0x0001f68e bhi 0x1f6f6                                                                       |             goto label_16;
                                                                                                 |         }
    0x0001f690 cmp r6, 1                                                                         |         
                                                                                                 |         if (r6 != 1) {
    0x0001f692 bne 0x1f6ec                                                                       |             goto label_17;
                                                                                                 |         }
    0x0001f694 ldr r2, [sp, 4]                                                                   |         r2 = var_4h;
    0x0001f696 ldrb r3, [r7]                                                                     |         r3 = *(r7);
    0x0001f698 strb.w r3, [r4, 0x23c]                                                            |         *((r4 + 0x23c)) = r3;
                                                                                                 | label_0:
    0x0001f69c movs r3, 0                                                                        |         r3 = 0;
    0x0001f69e str.w r6, [r4, 0x238]                                                             |         __asm ("str.w r6, aav.0x000000ff");
    0x0001f6a2 strb r3, [r2, r6]                                                                 |         *((r2 + r6)) = r3;
    0x0001f6a4 ldr r3, [r4, 0x14]                                                                |         r3 = *((r4 + 0x14));
                                                                                                 |         if (r3 != 0) {
    0x0001f6a6 cbz r3, 0x1f6b2                                                                   |             
    0x0001f6a8 add.w r1, r5, 0x78                                                                |             r1 = r5 + 0x78;
    0x0001f6ac mov r0, r4                                                                        |             r0 = r4;
    0x0001f6ae blx 0xe9bc                                                                        |             fcn_0000e9bc ();
                                                                                                 |         }
    0x0001f6b2 ldr r3, [r4, 0x28]                                                                |         r3 = *((r4 + 0x28));
                                                                                                 |         if (r3 != 0) {
    0x0001f6b4 cbz r3, 0x1f6c0                                                                   |             
    0x0001f6b6 add.w r1, r5, 0xb8                                                                |             r1 = r5 + 0xb8;
    0x0001f6ba mov r0, r4                                                                        |             r0 = r4;
    0x0001f6bc blx 0xedfc                                                                        |             fcn_0000edfc ();
                                                                                                 |         }
    0x0001f6c0 mov r0, r4                                                                        |         r0 = r4;
    0x0001f6c2 blx 0xeb00                                                                        |         fcn_0000eb00 ();
    0x0001f6c6 ldr r2, [pc, 0x17c]                                                               |         
    0x0001f6c8 ldr r3, [pc, 0x16c]                                                               |         r3 = *(0x1f838);
    0x0001f6ca add r2, pc                                                                        |         r2 = 0x3ef14;
    0x0001f6cc ldr r3, [r2, r3]                                                                  |         r3 = *(0x3ef14);
    0x0001f6ce ldr r2, [r3]                                                                      |         r2 = *(0x3ef14);
    0x0001f6d0 ldr r3, [sp, 0xc]                                                                 |         r3 = var_ch;
    0x0001f6d2 eors r2, r3                                                                       |         r2 ^= r3;
    0x0001f6d4 mov.w r3, 0                                                                       |         r3 = 0;
                                                                                                 |         if (r2 != r3) {
    0x0001f6d8 bne 0x1f79e                                                                       |             goto label_18;
                                                                                                 |         }
    0x0001f6da mov r0, r4                                                                        |         r0 = r4;
    0x0001f6dc add sp, 0x14                                                                      |         
    0x0001f6de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                        |         
                                                                                                 | label_14:
    0x0001f6e2 ldr r2, [sp]                                                                      |         r2 = *(sp);
    0x0001f6e4 cmp r6, 0                                                                         |         
    0x0001f6e6 beq 0x1f65c                                                                       |         
                                                                                                 |     } while (r6 == 0);
    0x0001f6e8 ldr r0, [sp]                                                                      |     r0 = *(sp);
    0x0001f6ea b 0x1f726                                                                         |     goto label_19;
                                                                                                 | label_17:
    0x0001f6ec ldr r2, [sp, 4]                                                                   |     r2 = var_4h;
    0x0001f6ee cmp r6, 0                                                                         |     
                                                                                                 |     if (r6 == 0) {
    0x0001f6f0 beq 0x1f69c                                                                       |         goto label_0;
                                                                                                 |     }
    0x0001f6f2 ldr r0, [sp, 4]                                                                   |     r0 = var_4h;
    0x0001f6f4 b 0x1f706                                                                         |     goto label_20;
                                                                                                 | label_16:
    0x0001f6f6 add r1, sp, 8                                                                     |     r1 += var_8h;
    0x0001f6f8 blx 0xed18                                                                        |     fcn_0000ed18 ();
    0x0001f6fc ldr r3, [sp, 8]                                                                   |     r3 = var_8h;
    0x0001f6fe str.w r0, [r4, 0x234]                                                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0001f702 str.w r3, [r4, 0x23c]                                                             |     __asm ("str.w r3, aav.0x000000ff");
                                                                                                 | label_20:
    0x0001f706 mov r2, r6                                                                        |     r2 = r6;
    0x0001f708 mov r1, r7                                                                        |     r1 = r7;
    0x0001f70a blx 0xebf8                                                                        |     fcn_0000ebf8 ();
    0x0001f70e ldr r6, [sp, 8]                                                                   |     r6 = var_8h;
    0x0001f710 ldr.w r2, [r4, 0x234]                                                             |     r2 = *((r4 + 0x234));
    0x0001f714 b 0x1f69c                                                                         |     goto label_0;
                                                                                                 | label_13:
    0x0001f716 add r1, sp, 8                                                                     |     r1 += var_8h;
    0x0001f718 blx 0xed18                                                                        |     fcn_0000ed18 ();
    0x0001f71c ldr r3, [sp, 8]                                                                   |     r3 = var_8h;
    0x0001f71e str.w r0, [r4, 0x21c]                                                             |     __asm ("str.w r0, aav.0x000000ff");
    0x0001f722 str.w r3, [r4, 0x224]                                                             |     __asm ("str.w r3, aav.0x000000ff");
                                                                                                 | label_19:
    0x0001f726 mov r2, r6                                                                        |     r2 = r6;
    0x0001f728 mov r1, r7                                                                        |     r1 = r7;
    0x0001f72a blx 0xebf8                                                                        |     fcn_0000ebf8 ();
    0x0001f72e ldr r6, [sp, 8]                                                                   |     r6 = var_8h;
    0x0001f730 ldr.w r2, [r4, 0x21c]                                                             |     r2 = *((r4 + 0x21c));
    0x0001f734 b 0x1f65c                                                                         |     goto label_1;
                                                                                                 | label_7:
    0x0001f736 adds r3, 4                                                                        |     r3 += 4;
    0x0001f738 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001f73c ldrex r1, [r3]                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001f740 adds r1, 1                                                                        |         r1++;
    0x0001f742 strex r2, r1, [r3]                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001f746 cmp r2, 0                                                                         |         
    0x0001f748 bne 0x1f73c                                                                       |         
                                                                                                 |     } while (r2 != 0);
    0x0001f74a dmb ish                                                                           |     __asm ("dmb ish");
    0x0001f74e b 0x1f564                                                                         |     goto label_2;
                                                                                                 | label_10:
    0x0001f750 adds r3, 4                                                                        |     r3 += 4;
    0x0001f752 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001f756 ldrex r1, [r3]                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001f75a adds r1, 1                                                                        |         r1++;
    0x0001f75c strex r2, r1, [r3]                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001f760 cmp r2, 0                                                                         |         
    0x0001f762 bne 0x1f756                                                                       |         
                                                                                                 |     } while (r2 != 0);
    0x0001f764 dmb ish                                                                           |     __asm ("dmb ish");
    0x0001f768 b 0x1f5b8                                                                         |     goto label_3;
                                                                                                 | label_8:
    0x0001f76a adds r3, 4                                                                        |     r3 += 4;
    0x0001f76c dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001f770 ldrex r1, [r3]                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001f774 adds r1, 1                                                                        |         r1++;
    0x0001f776 strex r2, r1, [r3]                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001f77a cmp r2, 0                                                                         |         
    0x0001f77c bne 0x1f770                                                                       |         
                                                                                                 |     } while (r2 != 0);
    0x0001f77e dmb ish                                                                           |     __asm ("dmb ish");
    0x0001f782 b 0x1f580                                                                         |     goto label_4;
                                                                                                 | label_9:
    0x0001f784 adds r3, 4                                                                        |     r3 += 4;
    0x0001f786 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001f78a ldrex r1, [r3]                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001f78e adds r1, 1                                                                        |         r1++;
    0x0001f790 strex r2, r1, [r3]                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001f794 cmp r2, 0                                                                         |         
    0x0001f796 bne 0x1f78a                                                                       |         
                                                                                                 |     } while (r2 != 0);
    0x0001f798 dmb ish                                                                           |     __asm ("dmb ish");
    0x0001f79c b 0x1f59c                                                                         |     goto label_5;
                                                                                                 | label_18:
    0x0001f79e blx 0xea48                                                                        |     fcn_0000ea48 ();
                                                                                                 | label_12:
    0x0001f7a2 ldr r0, [pc, 0xa4]                                                                |     
    0x0001f7a4 add r0, pc                                                                        |     r0 = 0x3eff2;
    0x0001f7a6 blx 0xe86c                                                                        |     fcn_0000e86c ();
                                                                                                 | label_15:
    0x0001f7aa ldr r0, [pc, 0xa0]                                                                |     
    0x0001f7ac add r0, pc                                                                        |     r0 = 0x3effe;
    0x0001f7ae blx 0xe86c                                                                        |     fcn_0000e86c ();
                                                                                                 |     do {
    0x0001f7b2 ldr.w r0, [r4, 0x1e4]                                                             |         r0 = *((r4 + 0x1e4));
                                                                                                 |         if (r0 != 0) {
    0x0001f7b6 cbz r0, 0x1f7bc                                                                   |             
    0x0001f7b8 bl 0x18a84                                                                        |             fcn_00018a84 (r0);
                                                                                                 |         }
    0x0001f7bc ldr.w r0, [r4, 0x1dc]                                                             |         r0 = *((r4 + 0x1dc));
                                                                                                 |         if (r0 != 0) {
    0x0001f7c0 cbz r0, 0x1f7c6                                                                   |             
    0x0001f7c2 bl 0x18a84                                                                        |             fcn_00018a84 (r0);
                                                                                                 |         }
    0x0001f7c6 ldr.w r0, [r4, 0x1d4]                                                             |         r0 = *((r4 + 0x1d4));
                                                                                                 |         if (r0 != 0) {
    0x0001f7ca cbz r0, 0x1f7d0                                                                   |             
    0x0001f7cc bl 0x18a84                                                                        |             fcn_00018a84 (r0);
                                                                                                 |         }
    0x0001f7d0 ldr.w r0, [r4, 0x1cc]                                                             |         r0 = *((r4 + 0x1cc));
                                                                                                 |         if (r0 != 0) {
    0x0001f7d4 cbnz r0, 0x1f802                                                                  |             goto label_21;
                                                                                                 |         }
                                                                                                 | label_6:
    0x0001f7d6 mov r0, sb                                                                        |         r0 = sb;
    0x0001f7d8 bl 0x1f9a0                                                                        |         fcn_0001f9a0 (r0);
    0x0001f7dc mov r0, r8                                                                        |         r0 = r8;
    0x0001f7de bl 0x1fa34                                                                        |         r0 = fcn_0001fa34 (r0);
    0x0001f7e2 blx 0xea54                                                                        |         fcn_0000ea54 ();
    0x0001f7e6 ldr.w r0, [r4, 0x210]                                                             |         r0 = *((r4 + 0x210));
                                                                                                 |         if (r0 != 0) {
    0x0001f7ea cbz r0, 0x1f7f0                                                                   |             
    0x0001f7ec blx 0xe9a4                                                                        |             fcn_0000e9a4 ();
                                                                                                 |         }
    0x0001f7f0 ldr.w r0, [r4, 0x200]                                                             |         r0 = *((r4 + 0x200));
    0x0001f7f4 bl 0x1d6b8                                                                        |         fcn_0001d6b8 (r0);
    0x0001f7f8 mov r0, sl                                                                        |         r0 = sl;
    0x0001f7fa blx 0xedb4                                                                        |         fcn_0000edb4 ();
    0x0001f7fe b 0x1f7b2                                                                         |         
                                                                                                 |     } while (1);
                                                                                                 | label_21:
    0x0001f802 bl 0x18a84                                                                        |     fcn_00018a84 (r0);
    0x0001f806 b 0x1f7d6                                                                         |     goto label_6;
                                                                                                 | }
    ; assembly                                                                           | /* r2dec pseudo code output */
                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1e0d8 */
                                                                                         | #include <stdint.h>
                                                                                         |  
    ; (fcn) method.mqtt::connect_options.operator_mqtt::connect_options_const_ ()        | void method_mqtt::connect_options_operator_mqtt::connect_options_const_ (int16_t arg1, int16_t arg2) {
                                                                                         |     int16_t var_0h;
                                                                                         |     int16_t var_4h;
                                                                                         |     int16_t var_8h;
                                                                                         |     int16_t var_18h;
                                                                                         |     int16_t var_1ch;
                                                                                         |     int16_t var_20h;
                                                                                         |     int16_t var_24h;
                                                                                         |     r0 = arg1;
                                                                                         |     r1 = arg2;
                                                                                         |     /* mqtt::connect_options::operator=(mqtt::connect_options const&) */
    0x0001e0d8 ldr.w r2, [pc, 0x484]                                                     |     
    0x0001e0dc ldr.w r3, [pc, 0x484]                                                     |     r3 = *(0x1e564);
    0x0001e0e0 push {r4, r5, r6, r7, lr}                                                 |     
    0x0001e0e2 mov r4, r0                                                                |     r4 = r0;
    0x0001e0e4 add r2, pc                                                                |     r2 = 0x3c648;
    0x0001e0e6 sub sp, 0x2c                                                              |     
    0x0001e0e8 mov r5, r1                                                                |     r5 = r1;
    0x0001e0ea ldr r3, [r2, r3]                                                          |     
    0x0001e0ec movs r2, 0x78                                                             |     r2 = 0x78;
    0x0001e0ee ldr.w r7, [pc, 0x478]                                                     |     
    0x0001e0f2 ldr r3, [r3]                                                              |     r3 = *(0x3c648);
    0x0001e0f4 str r3, [sp, 0x24]                                                        |     var_24h = r3;
    0x0001e0f6 mov.w r3, 0                                                               |     r3 = 0;
    0x0001e0fa blx 0xebf8                                                                |     fcn_0000ebf8 ();
    0x0001e0fe ldr r3, [r4, 0x14]                                                        |     r3 = *((r4 + 0x14));
    0x0001e100 add r7, pc                                                                |     r7 = 0x3c66e;
                                                                                         |     if (r3 != 0) {
    0x0001e102 cbz r3, 0x1e10e                                                           |         
    0x0001e104 add.w r1, r5, 0x78                                                        |         r1 = r5 + 0x78;
    0x0001e108 mov r0, r4                                                                |         r0 = r4;
    0x0001e10a blx 0xe9bc                                                                |         fcn_0000e9bc ();
                                                                                         |     }
    0x0001e10e ldr r3, [r4, 0x28]                                                        |     r3 = *((r4 + 0x28));
                                                                                         |     if (r3 != 0) {
    0x0001e110 cbz r3, 0x1e11c                                                           |         
    0x0001e112 add.w r1, r5, 0xb8                                                        |         r1 = r5 + 0xb8;
    0x0001e116 mov r0, r4                                                                |         r0 = r4;
    0x0001e118 blx 0xedfc                                                                |         fcn_0000edfc ();
                                                                                         |     }
    0x0001e11c ldrd r2, r3, [r5, 0x1c8]                                                  |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001e120 ldr.w r0, [r4, 0x1cc]                                                     |     r0 = *((r4 + 0x1cc));
    0x0001e124 str.w r2, [r4, 0x1c8]                                                     |     __asm ("str.w r2, aav.0x000000ff");
    0x0001e128 cmp r3, r0                                                                |     
                                                                                         |     if (r3 != r0) {
    0x0001e12a beq 0x1e15a                                                               |         
    0x0001e12c cmp r3, 0                                                                 |         
                                                                                         |         if (r3 == 0) {
    0x0001e12e beq.w 0x1e3fe                                                             |             goto label_13;
                                                                                         |         }
    0x0001e132 ldr.w r2, [pc, 0x438]                                                     |         r2 = *(0x1e56e);
    0x0001e136 ldr r6, [r7, r2]                                                          |         r6 = *((r7 + r2));
    0x0001e138 ldrb r2, [r6]                                                             |         r2 = *(r6);
    0x0001e13a cmp r2, 0                                                                 |         
                                                                                         |         if (r2 == 0) {
    0x0001e13c beq.w 0x1e3e2                                                             |             goto label_14;
                                                                                         |         }
    0x0001e140 ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x0001e142 adds r2, 1                                                                |         r2++;
    0x0001e144 str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
                                                                                         |         if (r0 != 0) {
    0x0001e146 cbz r0, 0x1e156                                                           |             
                                                                                         | label_5:
    0x0001e148 ldr r2, [r0, 4]                                                           |             r2 = *((r0 + 4));
    0x0001e14a cmp r2, 1                                                                 |             
    0x0001e14c add.w r1, r2, -1                                                          |             r1 = r2 + -1;
    0x0001e150 str r1, [r0, 4]                                                           |             *((r0 + 4)) = r1;
                                                                                         |             if (r2 == 1) {
    0x0001e152 beq.w 0x1e432                                                             |                 goto label_15;
                                                                                         |             }
                                                                                         |         }
                                                                                         | label_4:
    0x0001e156 str.w r3, [r4, 0x1cc]                                                     |         __asm ("str.w r3, aav.0x000000ff");
                                                                                         |     }
    0x0001e15a ldrd r2, r3, [r5, 0x1d0]                                                  |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001e15e ldr.w r0, [r4, 0x1d4]                                                     |     r0 = *((r4 + 0x1d4));
    0x0001e162 str.w r2, [r4, 0x1d0]                                                     |     __asm ("str.w r2, aav.0x000000ff");
    0x0001e166 cmp r3, r0                                                                |     
                                                                                         |     if (r3 != r0) {
    0x0001e168 beq 0x1e196                                                               |         
    0x0001e16a cmp r3, 0                                                                 |         
                                                                                         |         if (r3 == 0) {
    0x0001e16c beq.w 0x1e47a                                                             |             goto label_16;
                                                                                         |         }
    0x0001e170 ldr r2, [pc, 0x3f8]                                                       |         r2 = *(0x1e56c);
    0x0001e172 ldr r6, [r7, r2]                                                          |         r6 = *((r7 + r2));
    0x0001e174 ldrb r2, [r6]                                                             |         r2 = *(r6);
    0x0001e176 cmp r2, 0                                                                 |         
                                                                                         |         if (r2 == 0) {
    0x0001e178 beq.w 0x1e45e                                                             |             goto label_17;
                                                                                         |         }
    0x0001e17c ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x0001e17e adds r2, 1                                                                |         r2++;
    0x0001e180 str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
                                                                                         |         if (r0 != 0) {
    0x0001e182 cbz r0, 0x1e192                                                           |             
                                                                                         | label_7:
    0x0001e184 ldr r2, [r0, 4]                                                           |             r2 = *((r0 + 4));
    0x0001e186 cmp r2, 1                                                                 |             
    0x0001e188 add.w r1, r2, -1                                                          |             r1 = r2 + -1;
    0x0001e18c str r1, [r0, 4]                                                           |             *((r0 + 4)) = r1;
                                                                                         |             if (r2 == 1) {
    0x0001e18e beq.w 0x1e4ae                                                             |                 goto label_18;
                                                                                         |             }
                                                                                         |         }
                                                                                         | label_6:
    0x0001e192 str.w r3, [r4, 0x1d4]                                                     |         __asm ("str.w r3, aav.0x000000ff");
                                                                                         |     }
    0x0001e196 ldrd r2, r3, [r5, 0x1d8]                                                  |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001e19a ldr.w r0, [r4, 0x1dc]                                                     |     r0 = *((r4 + 0x1dc));
    0x0001e19e str.w r2, [r4, 0x1d8]                                                     |     __asm ("str.w r2, aav.0x000000ff");
    0x0001e1a2 cmp r3, r0                                                                |     
                                                                                         |     if (r3 != r0) {
    0x0001e1a4 beq 0x1e1d2                                                               |         
    0x0001e1a6 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 == 0) {
    0x0001e1a8 beq.w 0x1e380                                                             |             goto label_19;
                                                                                         |         }
    0x0001e1ac ldr r2, [pc, 0x3bc]                                                       |         r2 = *(0x1e56c);
    0x0001e1ae ldr r6, [r7, r2]                                                          |         r6 = *((r7 + r2));
    0x0001e1b0 ldrb r2, [r6]                                                             |         r2 = *(r6);
    0x0001e1b2 cmp r2, 0                                                                 |         
                                                                                         |         if (r2 == 0) {
    0x0001e1b4 beq.w 0x1e364                                                             |             goto label_20;
                                                                                         |         }
    0x0001e1b8 ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x0001e1ba adds r2, 1                                                                |         r2++;
    0x0001e1bc str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
                                                                                         |         if (r0 != 0) {
    0x0001e1be cbz r0, 0x1e1ce                                                           |             
                                                                                         | label_3:
    0x0001e1c0 ldr r2, [r0, 4]                                                           |             r2 = *((r0 + 4));
    0x0001e1c2 cmp r2, 1                                                                 |             
    0x0001e1c4 add.w r1, r2, -1                                                          |             r1 = r2 + -1;
    0x0001e1c8 str r1, [r0, 4]                                                           |             *((r0 + 4)) = r1;
                                                                                         |             if (r2 == 1) {
    0x0001e1ca beq.w 0x1e3b4                                                             |                 goto label_21;
                                                                                         |             }
                                                                                         |         }
                                                                                         | label_2:
    0x0001e1ce str.w r3, [r4, 0x1dc]                                                     |         __asm ("str.w r3, aav.0x000000ff");
                                                                                         |     }
    0x0001e1d2 ldrd r2, r3, [r5, 0x1e0]                                                  |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0001e1d6 ldr.w r0, [r4, 0x1e4]                                                     |     r0 = *((r4 + 0x1e4));
    0x0001e1da str.w r2, [r4, 0x1e0]                                                     |     __asm ("str.w r2, aav.0x000000ff");
    0x0001e1de cmp r3, r0                                                                |     
                                                                                         |     if (r3 != r0) {
    0x0001e1e0 beq 0x1e20c                                                               |         
    0x0001e1e2 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 == 0) {
    0x0001e1e4 beq.w 0x1e304                                                             |             goto label_22;
                                                                                         |         }
    0x0001e1e8 ldr r2, [pc, 0x380]                                                       |         r2 = *(0x1e56c);
    0x0001e1ea ldr r6, [r7, r2]                                                          |         r6 = *((r7 + r2));
    0x0001e1ec ldrb r2, [r6]                                                             |         r2 = *(r6);
    0x0001e1ee cmp r2, 0                                                                 |         
                                                                                         |         if (r2 == 0) {
    0x0001e1f0 beq 0x1e2e8                                                               |             goto label_23;
                                                                                         |         }
    0x0001e1f2 ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x0001e1f4 adds r2, 1                                                                |         r2++;
    0x0001e1f6 str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
                                                                                         |         if (r0 != 0) {
    0x0001e1f8 cbz r0, 0x1e208                                                           |             
                                                                                         | label_1:
    0x0001e1fa ldr r2, [r0, 4]                                                           |             r2 = *((r0 + 4));
    0x0001e1fc cmp r2, 1                                                                 |             
    0x0001e1fe add.w r1, r2, -1                                                          |             r1 = r2 + -1;
    0x0001e202 str r1, [r0, 4]                                                           |             *((r0 + 4)) = r1;
                                                                                         |             if (r2 == 1) {
    0x0001e204 beq.w 0x1e336                                                             |                 goto label_24;
                                                                                         |             }
                                                                                         |         }
                                                                                         | label_0:
    0x0001e208 str.w r3, [r4, 0x1e4]                                                     |         __asm ("str.w r3, aav.0x000000ff");
                                                                                         |     }
    0x0001e20c add.w r6, r4, 0x1e8                                                       |     r6 = r4 + 0x1e8;
    0x0001e210 add.w r7, r5, 0x1e8                                                       |     r7 = r5 + 0x1e8;
    0x0001e214 cmp r6, r7                                                                |     
                                                                                         |     if (r6 != r7) {
    0x0001e216 beq 0x1e230                                                               |         
    0x0001e218 mov r0, r6                                                                |         r0 = r6;
    0x0001e21a blx 0xedb4                                                                |         fcn_0000edb4 ();
    0x0001e21e mov r1, r7                                                                |         r1 = r7;
    0x0001e220 add r7, sp, 8                                                             |         r7 += var_8h;
    0x0001e222 mov r0, r7                                                                |         r0 = r7;
    0x0001e224 blx 0xeb24                                                                |         r0 = fcn_0000eb24 ();
    0x0001e228 ldm.w r7, {r0, r1, r2, r3}                                                |         r0 = *(r7);
                                                                                         |         r1 = *((r7 + 4));
                                                                                         |         r2 = *((r7 + 8));
                                                                                         |         r3 = *((r7 + 12));
    0x0001e22c stm.w r6, {r0, r1, r2, r3}                                                |         *(r6) = r0;
                                                                                         |         *((r6 + 4)) = r1;
                                                                                         |         *((r6 + 8)) = r2;
                                                                                         |         *((r6 + 12)) = r3;
                                                                                         |     }
    0x0001e230 add.w r6, r4, 0x1f8                                                       |     r6 = r4 + 0x1f8;
    0x0001e234 add.w r3, r5, 0x1f8                                                       |     r3 = r5 + 0x1f8;
    0x0001e238 cmp r6, r3                                                                |     
                                                                                         |     if (r6 == r3) {
    0x0001e23a beq 0x1e2a8                                                               |         goto label_25;
                                                                                         |     }
    0x0001e23c ldr.w r0, [r4, 0x200]                                                     |     r0 = *((r4 + 0x200));
    0x0001e240 ldr.w r3, [r4, 0x208]                                                     |     r3 = *((r4 + 0x208));
    0x0001e244 str r6, [sp, 0x20]                                                        |     var_20h = r6;
    0x0001e246 strd r0, r3, [sp, 0x18]                                                   |     __asm ("strd r0, r3, [var_18h]");
    0x0001e24a cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x0001e24c beq.w 0x1e4d8                                                             |         goto label_26;
                                                                                         |     }
    0x0001e250 ldr r3, [r3, 8]                                                           |     r3 = *((r3 + 8));
    0x0001e252 movs r2, 0                                                                |     r2 = 0;
    0x0001e254 str r2, [r0, 4]                                                           |     *((r0 + 4)) = r2;
                                                                                         |     if (r3 != 0) {
    0x0001e256 cbz r3, 0x1e25a                                                           |         
    0x0001e258 str r3, [sp, 0x1c]                                                        |         var_1ch = r3;
                                                                                         |     }
                                                                                         | label_8:
    0x0001e25a movs r3, 0                                                                |     r3 = 0;
    0x0001e25c add.w r1, r4, 0x1fc                                                       |     r1 = r4 + 0x1fc;
    0x0001e260 str.w r3, [r4, 0x200]                                                     |     __asm ("str.w r3, aav.0x000000ff");
    0x0001e264 str.w r3, [r4, 0x20c]                                                     |     __asm ("str.w r3, aav.0x000000ff");
    0x0001e268 ldr.w r3, [r5, 0x200]                                                     |     r3 = *((r5 + 0x200));
    0x0001e26c strd r1, r1, [r4, 0x204]                                                  |     __asm ("strd r1, r1, aav.0x000000ff");
                                                                                         |     if (r3 == 0) {
    0x0001e270 cbz r3, 0x1e2a4                                                           |         goto label_27;
                                                                                         |     }
    0x0001e272 mov r0, r3                                                                |     r0 = r3;
    0x0001e274 add r2, sp, 0x18                                                          |     r2 += var_18h;
    0x0001e276 bl 0x1d9ec                                                                |     r0 = fcn_0001d9ec (r0, r1, r2);
    0x0001e27a mov r3, r0                                                                |     r3 = r0;
                                                                                         |     do {
    0x0001e27c mov r2, r3                                                                |         r2 = r3;
    0x0001e27e ldr r3, [r3, 8]                                                           |         r3 = *((r3 + 8));
    0x0001e280 cmp r3, 0                                                                 |         
    0x0001e282 bne 0x1e27c                                                               |         
                                                                                         |     } while (r3 != 0);
    0x0001e284 mov r3, r0                                                                |     r3 = r0;
    0x0001e286 str.w r2, [r4, 0x204]                                                     |     __asm ("str.w r2, aav.0x000000ff");
                                                                                         |     do {
    0x0001e28a mov r2, r3                                                                |         r2 = r3;
    0x0001e28c ldr r3, [r3, 0xc]                                                         |         r3 = *((r3 + 0xc));
    0x0001e28e cmp r3, 0                                                                 |         
    0x0001e290 bne 0x1e28a                                                               |         
                                                                                         |     } while (r3 != 0);
    0x0001e292 ldr.w r3, [r5, 0x20c]                                                     |     r3 = *((r5 + 0x20c));
    0x0001e296 str.w r0, [r4, 0x200]                                                     |     __asm ("str.w r0, aav.0x000000ff");
    0x0001e29a ldr r0, [sp, 0x18]                                                        |     r0 = var_18h;
    0x0001e29c str.w r2, [r4, 0x208]                                                     |     __asm ("str.w r2, aav.0x000000ff");
    0x0001e2a0 str.w r3, [r4, 0x20c]                                                     |     __asm ("str.w r3, aav.0x000000ff");
                                                                                         | label_27:
    0x0001e2a4 bl 0x1d6b8                                                                |     fcn_0001d6b8 (r0);
                                                                                         | label_25:
    0x0001e2a8 mov r0, r6                                                                |     r0 = r6;
    0x0001e2aa blx 0xedf0                                                                |     fcn_0000edf0 ();
    0x0001e2ae add.w r1, r5, 0x21c                                                       |     r1 = r5 + 0x21c;
    0x0001e2b2 add.w r0, r4, 0x21c                                                       |     r0 = r4 + 0x21c;
    0x0001e2b6 blx 0xe7b8                                                                |     fcn_0000e7b8 ();
    0x0001e2ba add.w r1, r5, 0x234                                                       |     r1 = r5 + 0x234;
    0x0001e2be add.w r0, r4, 0x234                                                       |     r0 = r4 + 0x234;
    0x0001e2c2 blx 0xe7b8                                                                |     fcn_0000e7b8 ();
    0x0001e2c6 mov r0, r4                                                                |     r0 = r4;
    0x0001e2c8 blx 0xeb00                                                                |     fcn_0000eb00 ();
    0x0001e2cc ldr r2, [pc, 0x2a0]                                                       |     
    0x0001e2ce ldr r3, [pc, 0x294]                                                       |     r3 = *(0x1e566);
    0x0001e2d0 add r2, pc                                                                |     r2 = 0x3c844;
    0x0001e2d2 ldr r3, [r2, r3]                                                          |     r3 = *(0x3c844);
    0x0001e2d4 ldr r2, [r3]                                                              |     r2 = *(0x3c844);
    0x0001e2d6 ldr r3, [sp, 0x24]                                                        |     r3 = var_24h;
    0x0001e2d8 eors r2, r3                                                               |     r2 ^= r3;
    0x0001e2da mov.w r3, 0                                                               |     r3 = 0;
                                                                                         |     if (r2 != r3) {
    0x0001e2de bne.w 0x1e552                                                             |         goto label_28;
                                                                                         |     }
    0x0001e2e2 mov r0, r4                                                                |     r0 = r4;
    0x0001e2e4 add sp, 0x2c                                                              |     
    0x0001e2e6 pop {r4, r5, r6, r7, pc}                                                  |     
                                                                                         | label_23:
    0x0001e2e8 adds r2, r3, 4                                                            |     r2 = r3 + 4;
    0x0001e2ea dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e2ee ldrex r0, [r2]                                                            |         __asm ("ldrex r0, [r2]");
    0x0001e2f2 adds r0, 1                                                                |         r0++;
    0x0001e2f4 strex r1, r0, [r2]                                                        |         __asm ("strex r1, r0, [r2]");
    0x0001e2f8 cmp r1, 0                                                                 |         
    0x0001e2fa bne 0x1e2ee                                                               |         
                                                                                         |     } while (r1 != 0);
    0x0001e2fc dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e300 ldr.w r0, [r4, 0x1e4]                                                     |     r0 = *((r4 + 0x1e4));
                                                                                         | label_22:
    0x0001e304 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x0001e306 beq.w 0x1e208                                                             |         goto label_0;
                                                                                         |     }
    0x0001e30a ldr r2, [pc, 0x260]                                                       |     r2 = *(0x1e56e);
    0x0001e30c ldr r6, [r7, r2]                                                          |     r6 = *((r7 + r2));
    0x0001e30e ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e310 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 != 0) {
    0x0001e312 bne.w 0x1e1fa                                                             |         goto label_1;
                                                                                         |     }
    0x0001e316 adds r1, r0, 4                                                            |     r1 = r0 + 4;
    0x0001e318 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e31c ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e320 subs r7, r2, 1                                                            |         r7 = r2 - 1;
    0x0001e322 strex ip, r7, [r1]                                                        |         __asm ("strex ip, r7, [r1]");
    0x0001e326 cmp.w ip, 0                                                               |         
    0x0001e32a bne 0x1e31c                                                               |         
                                                                                         |     } while (ip != 0);
    0x0001e32c cmp r2, 1                                                                 |     
    0x0001e32e dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     if (r2 != 1) {
    0x0001e332 bne.w 0x1e208                                                             |         goto label_0;
                                                                                         |     }
                                                                                         | label_24:
    0x0001e336 ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e338 str r3, [sp, 4]                                                           |     var_4h = r3;
    0x0001e33a str r0, [sp]                                                              |     *(sp) = r0;
    0x0001e33c ldr r2, [r2, 8]                                                           |     r2 = *((r2 + 8));
    0x0001e33e blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001e340 ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e342 ldrd r0, r3, [sp]                                                         |     __asm ("ldrd r0, r3, [sp]");
    0x0001e346 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x0001e348 beq.w 0x1e518                                                             |         goto label_29;
                                                                                         |     }
    0x0001e34c ldr r2, [r0, 8]                                                           |     r2 = *((r0 + 8));
    0x0001e34e subs r1, r2, 1                                                            |     r1 = r2 - 1;
    0x0001e350 str r1, [r0, 8]                                                           |     *((r0 + 8)) = r1;
                                                                                         | label_11:
    0x0001e352 cmp r2, 1                                                                 |     
                                                                                         |     if (r2 != 1) {
    0x0001e354 bne.w 0x1e208                                                             |         goto label_0;
                                                                                         |     }
    0x0001e358 ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e35a str r3, [sp]                                                              |     *(sp) = r3;
    0x0001e35c ldr r2, [r2, 0xc]                                                         |     r2 = *((r2 + 0xc));
    0x0001e35e blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t) (r2, r3);
    0x0001e360 ldr r3, [sp]                                                              |     r3 = *(sp);
    0x0001e362 b 0x1e208                                                                 |     goto label_0;
                                                                                         | label_20:
    0x0001e364 adds r2, r3, 4                                                            |     r2 = r3 + 4;
    0x0001e366 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e36a ldrex r0, [r2]                                                            |         __asm ("ldrex r0, [r2]");
    0x0001e36e adds r0, 1                                                                |         r0++;
    0x0001e370 strex r1, r0, [r2]                                                        |         __asm ("strex r1, r0, [r2]");
    0x0001e374 cmp r1, 0                                                                 |         
    0x0001e376 bne 0x1e36a                                                               |         
                                                                                         |     } while (r1 != 0);
    0x0001e378 dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e37c ldr.w r0, [r4, 0x1dc]                                                     |     r0 = *((r4 + 0x1dc));
                                                                                         | label_19:
    0x0001e380 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x0001e382 beq.w 0x1e1ce                                                             |         goto label_2;
                                                                                         |     }
    0x0001e386 ldr r2, [pc, 0x1e4]                                                       |     r2 = *(0x1e56e);
    0x0001e388 ldr r6, [r7, r2]                                                          |     r6 = *((r7 + r2));
    0x0001e38a ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e38c cmp r2, 0                                                                 |     
                                                                                         |     if (r2 != 0) {
    0x0001e38e bne.w 0x1e1c0                                                             |         goto label_3;
                                                                                         |     }
    0x0001e392 adds r1, r0, 4                                                            |     r1 = r0 + 4;
    0x0001e394 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e398 ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e39c add.w ip, r2, -1                                                          |         
    0x0001e3a0 strex lr, ip, [r1]                                                        |         __asm ("strex lr, ip, [r1]");
    0x0001e3a4 cmp.w lr, 0                                                               |         
    0x0001e3a8 bne 0x1e398                                                               |         
                                                                                         |     } while (lr != 0);
    0x0001e3aa cmp r2, 1                                                                 |     
    0x0001e3ac dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     if (r2 != 1) {
    0x0001e3b0 bne.w 0x1e1ce                                                             |         goto label_2;
                                                                                         |     }
                                                                                         | label_21:
    0x0001e3b4 ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e3b6 str r3, [sp, 4]                                                           |     var_4h = r3;
    0x0001e3b8 str r0, [sp]                                                              |     *(sp) = r0;
    0x0001e3ba ldr r2, [r2, 8]                                                           |     r2 = *((r2 + 8));
    0x0001e3bc blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001e3be ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e3c0 ldrd r0, r3, [sp]                                                         |     __asm ("ldrd r0, r3, [sp]");
    0x0001e3c4 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x0001e3c6 beq.w 0x1e4fa                                                             |         goto label_30;
                                                                                         |     }
    0x0001e3ca ldr r2, [r0, 8]                                                           |     r2 = *((r0 + 8));
    0x0001e3cc subs r1, r2, 1                                                            |     r1 = r2 - 1;
    0x0001e3ce str r1, [r0, 8]                                                           |     *((r0 + 8)) = r1;
                                                                                         | label_10:
    0x0001e3d0 cmp r2, 1                                                                 |     
                                                                                         |     if (r2 != 1) {
    0x0001e3d2 bne.w 0x1e1ce                                                             |         goto label_2;
                                                                                         |     }
    0x0001e3d6 ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e3d8 str r3, [sp]                                                              |     *(sp) = r3;
    0x0001e3da ldr r2, [r2, 0xc]                                                         |     r2 = *((r2 + 0xc));
    0x0001e3dc blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t) (r2, r3);
    0x0001e3de ldr r3, [sp]                                                              |     r3 = *(sp);
    0x0001e3e0 b 0x1e1ce                                                                 |     goto label_2;
                                                                                         | label_14:
    0x0001e3e2 adds r2, r3, 4                                                            |     r2 = r3 + 4;
    0x0001e3e4 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e3e8 ldrex r0, [r2]                                                            |         __asm ("ldrex r0, [r2]");
    0x0001e3ec adds r0, 1                                                                |         r0++;
    0x0001e3ee strex r1, r0, [r2]                                                        |         __asm ("strex r1, r0, [r2]");
    0x0001e3f2 cmp r1, 0                                                                 |         
    0x0001e3f4 bne 0x1e3e8                                                               |         
                                                                                         |     } while (r1 != 0);
    0x0001e3f6 dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e3fa ldr.w r0, [r4, 0x1cc]                                                     |     r0 = *((r4 + 0x1cc));
                                                                                         | label_13:
    0x0001e3fe cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x0001e400 beq.w 0x1e156                                                             |         goto label_4;
                                                                                         |     }
    0x0001e404 ldr r2, [pc, 0x164]                                                       |     r2 = *(0x1e56c);
    0x0001e406 ldr r6, [r7, r2]                                                          |     r6 = *((r7 + r2));
    0x0001e408 ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e40a cmp r2, 0                                                                 |     
                                                                                         |     if (r2 != 0) {
    0x0001e40c bne.w 0x1e148                                                             |         goto label_5;
                                                                                         |     }
    0x0001e410 adds r1, r0, 4                                                            |     r1 = r0 + 4;
    0x0001e412 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e416 ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e41a add.w ip, r2, -1                                                          |         
    0x0001e41e strex lr, ip, [r1]                                                        |         __asm ("strex lr, ip, [r1]");
    0x0001e422 cmp.w lr, 0                                                               |         
    0x0001e426 bne 0x1e416                                                               |         
                                                                                         |     } while (lr != 0);
    0x0001e428 cmp r2, 1                                                                 |     
    0x0001e42a dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     if (r2 != 1) {
    0x0001e42e bne.w 0x1e156                                                             |         goto label_4;
                                                                                         |     }
                                                                                         | label_15:
    0x0001e432 ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e434 str r3, [sp, 4]                                                           |     var_4h = r3;
    0x0001e436 str r0, [sp]                                                              |     *(sp) = r0;
    0x0001e438 ldr r2, [r2, 8]                                                           |     r2 = *((r2 + 8));
    0x0001e43a blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001e43c ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e43e ldrd r0, r3, [sp]                                                         |     __asm ("ldrd r0, r3, [sp]");
    0x0001e442 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x0001e444 beq 0x1e534                                                               |         goto label_31;
                                                                                         |     }
    0x0001e446 ldr r2, [r0, 8]                                                           |     r2 = *((r0 + 8));
    0x0001e448 subs r1, r2, 1                                                            |     r1 = r2 - 1;
    0x0001e44a str r1, [r0, 8]                                                           |     *((r0 + 8)) = r1;
                                                                                         | label_12:
    0x0001e44c cmp r2, 1                                                                 |     
                                                                                         |     if (r2 != 1) {
    0x0001e44e bne.w 0x1e156                                                             |         goto label_4;
                                                                                         |     }
    0x0001e452 ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e454 str r3, [sp]                                                              |     *(sp) = r3;
    0x0001e456 ldr r2, [r2, 0xc]                                                         |     r2 = *((r2 + 0xc));
    0x0001e458 blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t) (r2, r3);
    0x0001e45a ldr r3, [sp]                                                              |     r3 = *(sp);
    0x0001e45c b 0x1e156                                                                 |     goto label_4;
                                                                                         | label_17:
    0x0001e45e adds r2, r3, 4                                                            |     r2 = r3 + 4;
    0x0001e460 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e464 ldrex r0, [r2]                                                            |         __asm ("ldrex r0, [r2]");
    0x0001e468 adds r0, 1                                                                |         r0++;
    0x0001e46a strex r1, r0, [r2]                                                        |         __asm ("strex r1, r0, [r2]");
    0x0001e46e cmp r1, 0                                                                 |         
    0x0001e470 bne 0x1e464                                                               |         
                                                                                         |     } while (r1 != 0);
    0x0001e472 dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e476 ldr.w r0, [r4, 0x1d4]                                                     |     r0 = *((r4 + 0x1d4));
                                                                                         | label_16:
    0x0001e47a cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x0001e47c beq.w 0x1e192                                                             |         goto label_6;
                                                                                         |     }
    0x0001e480 ldr r2, [pc, 0xe8]                                                        |     r2 = *(0x1e56c);
    0x0001e482 ldr r6, [r7, r2]                                                          |     r6 = *((r7 + r2));
    0x0001e484 ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e486 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 != 0) {
    0x0001e488 bne.w 0x1e184                                                             |         goto label_7;
                                                                                         |     }
    0x0001e48c adds r1, r0, 4                                                            |     r1 = r0 + 4;
    0x0001e48e dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e492 ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e496 add.w ip, r2, -1                                                          |         
    0x0001e49a strex lr, ip, [r1]                                                        |         __asm ("strex lr, ip, [r1]");
    0x0001e49e cmp.w lr, 0                                                               |         
    0x0001e4a2 bne 0x1e492                                                               |         
                                                                                         |     } while (lr != 0);
    0x0001e4a4 cmp r2, 1                                                                 |     
    0x0001e4a6 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     if (r2 != 1) {
    0x0001e4aa bne.w 0x1e192                                                             |         goto label_6;
                                                                                         |     }
                                                                                         | label_18:
    0x0001e4ae ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e4b0 str r3, [sp, 4]                                                           |     var_4h = r3;
    0x0001e4b2 str r0, [sp]                                                              |     *(sp) = r0;
    0x0001e4b4 ldr r2, [r2, 8]                                                           |     r2 = *((r2 + 8));
    0x0001e4b6 blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001e4b8 ldrb r2, [r6]                                                             |     r2 = *(r6);
    0x0001e4ba ldrd r0, r3, [sp]                                                         |     __asm ("ldrd r0, r3, [sp]");
                                                                                         |     if (r2 == 0) {
    0x0001e4be cbz r2, 0x1e4dc                                                           |         goto label_32;
                                                                                         |     }
    0x0001e4c0 ldr r2, [r0, 8]                                                           |     r2 = *((r0 + 8));
    0x0001e4c2 subs r1, r2, 1                                                            |     r1 = r2 - 1;
    0x0001e4c4 str r1, [r0, 8]                                                           |     *((r0 + 8)) = r1;
                                                                                         | label_9:
    0x0001e4c6 cmp r2, 1                                                                 |     
                                                                                         |     if (r2 != 1) {
    0x0001e4c8 bne.w 0x1e192                                                             |         goto label_6;
                                                                                         |     }
    0x0001e4cc ldr r2, [r0]                                                              |     r2 = *(r0);
    0x0001e4ce str r3, [sp]                                                              |     *(sp) = r3;
    0x0001e4d0 ldr r2, [r2, 0xc]                                                         |     r2 = *((r2 + 0xc));
    0x0001e4d2 blx r2                                                                    |     uint32_t (*r2)(uint32_t, uint32_t) (r2, r3);
    0x0001e4d4 ldr r3, [sp]                                                              |     r3 = *(sp);
    0x0001e4d6 b 0x1e192                                                                 |     goto label_6;
                                                                                         | label_26:
    0x0001e4d8 str r0, [sp, 0x1c]                                                        |     var_1ch = r0;
    0x0001e4da b 0x1e25a                                                                 |     goto label_8;
                                                                                         | label_32:
    0x0001e4dc add.w r1, r0, 8                                                           |     r1 = r0 + 8;
    0x0001e4e0 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e4e4 ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e4e8 subs r6, r2, 1                                                            |         r6 = r2 - 1;
    0x0001e4ea strex ip, r6, [r1]                                                        |         __asm ("strex ip, r6, [r1]");
    0x0001e4ee cmp.w ip, 0                                                               |         
    0x0001e4f2 bne 0x1e4e4                                                               |         
                                                                                         |     } while (ip != 0);
    0x0001e4f4 dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e4f8 b 0x1e4c6                                                                 |     goto label_9;
                                                                                         | label_30:
    0x0001e4fa add.w r1, r0, 8                                                           |     r1 = r0 + 8;
    0x0001e4fe dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e502 ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e506 subs r6, r2, 1                                                            |         r6 = r2 - 1;
    0x0001e508 strex ip, r6, [r1]                                                        |         __asm ("strex ip, r6, [r1]");
    0x0001e50c cmp.w ip, 0                                                               |         
    0x0001e510 bne 0x1e502                                                               |         
                                                                                         |     } while (ip != 0);
    0x0001e512 dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e516 b 0x1e3d0                                                                 |     goto label_10;
                                                                                         | label_29:
    0x0001e518 add.w r1, r0, 8                                                           |     r1 = r0 + 8;
    0x0001e51c dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e520 ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e524 subs r6, r2, 1                                                            |         r6 = r2 - 1;
    0x0001e526 strex r7, r6, [r1]                                                        |         __asm ("strex r7, r6, [r1]");
    0x0001e52a cmp r7, 0                                                                 |         
    0x0001e52c bne 0x1e520                                                               |         
                                                                                         |     } while (r7 != 0);
    0x0001e52e dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e532 b 0x1e352                                                                 |     goto label_11;
                                                                                         | label_31:
    0x0001e534 add.w r1, r0, 8                                                           |     r1 = r0 + 8;
    0x0001e538 dmb ish                                                                   |     __asm ("dmb ish");
                                                                                         |     do {
    0x0001e53c ldrex r2, [r1]                                                            |         __asm ("ldrex r2, [r1]");
    0x0001e540 subs r6, r2, 1                                                            |         r6 = r2 - 1;
    0x0001e542 strex ip, r6, [r1]                                                        |         __asm ("strex ip, r6, [r1]");
    0x0001e546 cmp.w ip, 0                                                               |         
    0x0001e54a bne 0x1e53c                                                               |         
                                                                                         |     } while (ip != 0);
    0x0001e54c dmb ish                                                                   |     __asm ("dmb ish");
    0x0001e550 b 0x1e44c                                                                 |     goto label_12;
                                                                                         | label_28:
    0x0001e552 blx 0xea48                                                                |     fcn_0000ea48 ();
    0x0001e556 ldr r0, [sp, 0x18]                                                        |     r0 = var_18h;
    0x0001e558 bl 0x1d6b8                                                                |     r0 = fcn_0001d6b8 (r0);
    0x0001e55c blx 0xea54                                                                |     fcn_0000ea54 ();
    0x0001e560 invalid                                                                   |     
                                                                                         | }
    ; assembly                                                                                   | /* r2dec pseudo code output */
                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1e9f0 */
                                                                                                 | #include <stdint.h>
                                                                                                 |  
    ; (fcn) method.mqtt::connect_options.set_token_std::shared_ptr_mqtt::token__const_ ()        | void method_mqtt::connect_options_set_token_std::shared_ptr_mqtt::token_const_ (uint32_t arg1, int16_t arg2) {
                                                                                                 |     r0 = arg1;
                                                                                                 |     r1 = arg2;
                                                                                                 |     /* mqtt::connect_options::set_token(std::shared_ptr<qtt::token> const&) */
    0x0001e9f0 invalid                                                                           |     
    0x0001e9f4 mov r4, r0                                                                        |     r4 = r0;
    0x0001e9f6 ldrd r3, r7, [r1]                                                                 |     __asm ("ldrd r3, r7, [r1]");
    0x0001e9fa mov r5, r1                                                                        |     r5 = r1;
    0x0001e9fc ldr.w r6, [r0, 0x1dc]                                                             |     r6 = *((r0 + 0x1dc));
    0x0001ea00 ldr.w r8, [pc, 0xfc]                                                              |     r8 = *(0x0001eb00);
    0x0001ea04 str.w r3, [r0, 0x1d8]                                                             |     __asm ("str.w r3, aav.0x000000ff");
    0x0001ea08 cmp r7, r6                                                                        |     
    0x0001ea0a add r8, pc                                                                        |     r8 += pc;
                                                                                                 |     if (r7 != r6) {
    0x0001ea0c beq 0x1ea3a                                                                       |         
    0x0001ea0e cmp r7, 0                                                                         |         
                                                                                                 |         if (r7 == 0) {
    0x0001ea10 beq 0x1ea94                                                                       |             goto label_3;
                                                                                                 |         }
    0x0001ea12 ldr r2, [pc, 0xf0]                                                                |         r2 = *(0x1eb06);
    0x0001ea14 ldr.w sb, [r8, r2]                                                                |         sb = *((r8 + r2));
    0x0001ea18 ldrb.w r2, [sb]                                                                   |         r2 = *(sb);
                                                                                                 |         if (r2 == 0) {
    0x0001ea1c cbz r2, 0x1ea78                                                                   |             goto label_4;
                                                                                                 |         }
    0x0001ea1e ldr r2, [r7, 4]                                                                   |         r2 = *((r7 + 4));
    0x0001ea20 adds r2, 1                                                                        |         r2++;
    0x0001ea22 str r2, [r7, 4]                                                                   |         *((r7 + 4)) = r2;
                                                                                                 |         if (r6 != 0) {
    0x0001ea24 cbz r6, 0x1ea36                                                                   |             
                                                                                                 | label_1:
    0x0001ea26 ldr r3, [r6, 4]                                                                   |             r3 = *((r6 + 4));
    0x0001ea28 cmp r3, 1                                                                         |             
    0x0001ea2a add.w r2, r3, -1                                                                  |             r2 = r3 + -1;
    0x0001ea2e str r2, [r6, 4]                                                                   |             *((r6 + 4)) = r2;
                                                                                                 |             if (r3 == 1) {
    0x0001ea30 beq 0x1eac2                                                                       |                 goto label_5;
                                                                                                 |             }
                                                                                                 | label_0:
    0x0001ea32 ldr.w r3, [r4, 0x1d8]                                                             |             r3 = *((r4 + 0x1d8));
                                                                                                 |         }
    0x0001ea36 str.w r7, [r4, 0x1dc]                                                             |         __asm ("str.w r7, aav.0x000000ff");
                                                                                                 |     }
    0x0001ea3a str r3, [r4, 0x34]                                                                |     *((r4 + 0x34)) = r3;
    0x0001ea3c movs r3, 0                                                                        |     r3 = 0;
    0x0001ea3e ldr r2, [r5]                                                                      |     r2 = *(r5);
    0x0001ea40 strd r3, r3, [r4, 0x2c]                                                           |     __asm ("strd r3, r3, [r4, 0x2c]");
    0x0001ea44 strd r3, r3, [r4, 0x64]                                                           |     __asm ("strd r3, r3, [r4, 0x64]");
                                                                                                 |     if (r2 != 0) {
    0x0001ea48 cbz r2, 0x1ea60                                                                   |         
    0x0001ea4a ldr r3, [r4, 0x40]                                                                |         r3 = *((r4 + 0x40));
    0x0001ea4c cmp r3, 4                                                                         |         
                                                                                                 |         if (r3 > 4) {
    0x0001ea4e bgt 0x1ea64                                                                       |             goto label_6;
                                                                                                 |         }
    0x0001ea50 ldr r2, [pc, 0xb4]                                                                |         r2 = *(0x1eb08);
    0x0001ea52 ldr r3, [pc, 0xb8]                                                                |         r3 = *(0x1eb0e);
    0x0001ea54 ldr.w r2, [r8, r2]                                                                |         r2 = *((r8 + r2));
    0x0001ea58 str r2, [r4, 0x2c]                                                                |         *((r4 + 0x2c)) = r2;
    0x0001ea5a ldr.w r3, [r8, r3]                                                                |         r3 = *((r8 + r3));
    0x0001ea5e str r3, [r4, 0x30]                                                                |         *((r4 + 0x30)) = r3;
                                                                                                 |     }
    0x0001ea60 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                            |     
                                                                                                 | label_6:
    0x0001ea64 ldr r2, [pc, 0xa8]                                                                |     r2 = *(0x1eb10);
    0x0001ea66 ldr r3, [pc, 0xac]                                                                |     r3 = *(0x1eb16);
    0x0001ea68 ldr.w r2, [r8, r2]                                                                |     r2 = *((r8 + r2));
    0x0001ea6c str r2, [r4, 0x64]                                                                |     *((r4 + 0x64)) = r2;
    0x0001ea6e ldr.w r3, [r8, r3]                                                                |     r3 = *((r8 + r3));
    0x0001ea72 str r3, [r4, 0x68]                                                                |     *((r4 + 0x68)) = r3;
    0x0001ea74 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                            |     
                                                                                                 | label_4:
    0x0001ea78 adds r3, r7, 4                                                                    |     r3 = r7 + 4;
    0x0001ea7a dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001ea7e ldrex r1, [r3]                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001ea82 adds r1, 1                                                                        |         r1++;
    0x0001ea84 strex r2, r1, [r3]                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001ea88 cmp r2, 0                                                                         |         
    0x0001ea8a bne 0x1ea7e                                                                       |         
                                                                                                 |     } while (r2 != 0);
    0x0001ea8c dmb ish                                                                           |     __asm ("dmb ish");
    0x0001ea90 ldr.w r6, [r4, 0x1dc]                                                             |     r6 = *((r4 + 0x1dc));
                                                                                                 | label_3:
    0x0001ea94 cmp r6, 0                                                                         |     
                                                                                                 |     if (r6 == 0) {
    0x0001ea96 beq 0x1ea32                                                                       |         goto label_0;
                                                                                                 |     }
    0x0001ea98 ldr r3, [pc, 0x68]                                                                |     r3 = *(0x1eb04);
    0x0001ea9a ldr.w sb, [r8, r3]                                                                |     sb = *((r8 + r3));
    0x0001ea9e ldrb.w r3, [sb]                                                                   |     r3 = *(sb);
    0x0001eaa2 cmp r3, 0                                                                         |     
                                                                                                 |     if (r3 != 0) {
    0x0001eaa4 bne 0x1ea26                                                                       |         goto label_1;
                                                                                                 |     }
    0x0001eaa6 adds r2, r6, 4                                                                    |     r2 = r6 + 4;
    0x0001eaa8 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001eaac ldrex r3, [r2]                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001eab0 subs r1, r3, 1                                                                    |         r1 = r3 - 1;
    0x0001eab2 strex r0, r1, [r2]                                                                |         __asm ("strex r0, r1, [r2]");
    0x0001eab6 cmp r0, 0                                                                         |         
    0x0001eab8 bne 0x1eaac                                                                       |         
                                                                                                 |     } while (r0 != 0);
    0x0001eaba cmp r3, 1                                                                         |     
    0x0001eabc dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     if (r3 != 1) {
    0x0001eac0 bne 0x1ea32                                                                       |         goto label_0;
                                                                                                 |     }
                                                                                                 | label_5:
    0x0001eac2 ldr r3, [r6]                                                                      |     r3 = *(r6);
    0x0001eac4 mov r0, r6                                                                        |     r0 = r6;
    0x0001eac6 ldr r3, [r3, 8]                                                                   |     r3 = *((r3 + 8));
    0x0001eac8 blx r3                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001eaca ldrb.w r3, [sb]                                                                   |     r3 = *(sb);
                                                                                                 |     if (r3 == 0) {
    0x0001eace cbz r3, 0x1eae4                                                                   |         goto label_7;
                                                                                                 |     }
    0x0001ead0 ldr r3, [r6, 8]                                                                   |     r3 = *((r6 + 8));
    0x0001ead2 subs r2, r3, 1                                                                    |     r2 = r3 - 1;
    0x0001ead4 str r2, [r6, 8]                                                                   |     *((r6 + 8)) = r2;
                                                                                                 | label_2:
    0x0001ead6 cmp r3, 1                                                                         |     
                                                                                                 |     if (r3 != 1) {
    0x0001ead8 bne 0x1ea32                                                                       |         goto label_0;
                                                                                                 |     }
    0x0001eada ldr r3, [r6]                                                                      |     r3 = *(r6);
    0x0001eadc mov r0, r6                                                                        |     r0 = r6;
    0x0001eade ldr r3, [r3, 0xc]                                                                 |     r3 = *((r3 + 0xc));
    0x0001eae0 blx r3                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001eae2 b 0x1ea32                                                                         |     goto label_0;
                                                                                                 | label_7:
    0x0001eae4 add.w r2, r6, 8                                                                   |     r2 = r6 + 8;
    0x0001eae8 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0001eaec ldrex r3, [r2]                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001eaf0 subs r1, r3, 1                                                                    |         r1 = r3 - 1;
    0x0001eaf2 strex r0, r1, [r2]                                                                |         __asm ("strex r0, r1, [r2]");
    0x0001eaf6 cmp r0, 0                                                                         |         
    0x0001eaf8 bne 0x1eaec                                                                       |         
                                                                                                 |     } while (r0 != 0);
    0x0001eafa dmb ish                                                                           |     __asm ("dmb ish");
    0x0001eafe b 0x1ead6                                                                         |     goto label_2;
                                                                                                 | }
    ; assembly                                                                                                                           | /* r2dec pseudo code output */
                                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x21be0 */
                                                                                                                                         | #include <stdint.h>
                                                                                                                                         |  
    ; (fcn) method.mqtt::delivery_response_options.delivery_response_options_std::shared_ptr_mqtt::delivery_token__const__int_ ()        | void method_mqtt::delivery_response_options_delivery_response_options_std::shared_ptr_mqtt::delivery_token_const_int_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                                                         |     r0 = arg1;
                                                                                                                                         |     r1 = arg2;
                                                                                                                                         |     r2 = arg3;
                                                                                                                                         |     /* mqtt::delivery_response_options::delivery_response_options(std::shared_ptr<qtt::delivery_token> const&, int) */
    0x00021be0 push {r4, r5, r6, lr}                                                                                                     |     
    0x00021be2 mov r6, r1                                                                                                                |     r6 = r1;
    0x00021be4 mov r1, r2                                                                                                                |     r1 = r2;
    0x00021be6 mov r4, r0                                                                                                                |     r4 = r0;
    0x00021be8 blx 0xe65c                                                                                                                |     fcn_0000e65c ();
    0x00021bec ldrd r3, r5, [r6]                                                                                                         |     __asm ("ldrd r3, r5, [r6]");
    0x00021bf0 ldr r2, [pc, 0x80]                                                                                                        |     
    0x00021bf2 str r3, [r4, 0x44]                                                                                                        |     *((r4 + 0x44)) = r3;
    0x00021bf4 add r2, pc                                                                                                                |     r2 = 0x4386c;
                                                                                                                                         |     if (r5 == 0) {
    0x00021bf6 cbz r5, 0x21c3a                                                                                                           |         goto label_2;
                                                                                                                                         |     }
    0x00021bf8 ldr r1, [pc, 0x7c]                                                                                                        |     r1 = *(0x21c78);
    0x00021bfa ldr r1, [r2, r1]                                                                                                          |     r1 = *((r2 + r1));
    0x00021bfc ldrb r1, [r1]                                                                                                             |     r1 = *(r1);
                                                                                                                                         |     if (r1 != 0) {
    0x00021bfe cbz r1, 0x21c20                                                                                                           |         
    0x00021c00 ldr r2, [r5, 8]                                                                                                           |         r2 = *((r5 + 8));
    0x00021c02 ldr r0, [r4, 0x48]                                                                                                        |         r0 = *((r4 + 0x48));
    0x00021c04 adds r2, 1                                                                                                                |         r2++;
    0x00021c06 str r2, [r5, 8]                                                                                                           |         *((r5 + 8)) = r2;
                                                                                                                                         |         if (r0 != 0) {
    0x00021c08 cbz r0, 0x21c18                                                                                                           |             
                                                                                                                                         | label_1:
    0x00021c0a ldr r3, [r0, 8]                                                                                                           |             r3 = *((r0 + 8));
    0x00021c0c cmp r3, 1                                                                                                                 |             
    0x00021c0e add.w r2, r3, -1                                                                                                          |             r2 = r3 + -1;
    0x00021c12 str r2, [r0, 8]                                                                                                           |             *((r0 + 8)) = r2;
                                                                                                                                         |             if (r3 == 1) {
    0x00021c14 beq 0x21c6a                                                                                                               |                 goto label_3;
                                                                                                                                         |             }
                                                                                                                                         | label_0:
    0x00021c16 ldr r3, [r6]                                                                                                              |             r3 = *(r6);
                                                                                                                                         |         }
    0x00021c18 mov r0, r4                                                                                                                |         r0 = r4;
    0x00021c1a str r5, [r4, 0x48]                                                                                                        |         *((r4 + 0x48)) = r5;
    0x00021c1c str r3, [r4, 0x10]                                                                                                        |         *((r4 + 0x10)) = r3;
    0x00021c1e pop {r4, r5, r6, pc}                                                                                                      |         
                                                                                                                                         |     }
    0x00021c20 add.w r3, r5, 8                                                                                                           |     r3 = r5 + 8;
    0x00021c24 dmb ish                                                                                                                   |     __asm ("dmb ish");
                                                                                                                                         |     do {
    0x00021c28 ldrex r0, [r3]                                                                                                            |         __asm ("ldrex r0, [r3]");
    0x00021c2c adds r0, 1                                                                                                                |         r0++;
    0x00021c2e strex r1, r0, [r3]                                                                                                        |         __asm ("strex r1, r0, [r3]");
    0x00021c32 cmp r1, 0                                                                                                                 |         
    0x00021c34 bne 0x21c28                                                                                                               |         
                                                                                                                                         |     } while (r1 != 0);
    0x00021c36 dmb ish                                                                                                                   |     __asm ("dmb ish");
                                                                                                                                         | label_2:
    0x00021c3a ldr r0, [r4, 0x48]                                                                                                        |     r0 = *((r4 + 0x48));
    0x00021c3c cmp r0, 0                                                                                                                 |     
                                                                                                                                         |     if (r0 == 0) {
    0x00021c3e beq 0x21c16                                                                                                               |         goto label_0;
                                                                                                                                         |     }
    0x00021c40 ldr r3, [pc, 0x34]                                                                                                        |     r3 = *(0x21c78);
    0x00021c42 ldr r3, [r2, r3]                                                                                                          |     r3 = *((r2 + r3));
    0x00021c44 ldrb r3, [r3]                                                                                                             |     r3 = *(r3);
    0x00021c46 cmp r3, 0                                                                                                                 |     
                                                                                                                                         |     if (r3 != 0) {
    0x00021c48 bne 0x21c0a                                                                                                               |         goto label_1;
                                                                                                                                         |     }
    0x00021c4a add.w r2, r0, 8                                                                                                           |     r2 = r0 + 8;
    0x00021c4e dmb ish                                                                                                                   |     __asm ("dmb ish");
                                                                                                                                         |     do {
    0x00021c52 ldrex r3, [r2]                                                                                                            |         __asm ("ldrex r3, [r2]");
    0x00021c56 subs r1, r3, 1                                                                                                            |         r1 = r3 - 1;
    0x00021c58 strex ip, r1, [r2]                                                                                                        |         __asm ("strex ip, r1, [r2]");
    0x00021c5c cmp.w ip, 0                                                                                                               |         
    0x00021c60 bne 0x21c52                                                                                                               |         
                                                                                                                                         |     } while (ip != 0);
    0x00021c62 cmp r3, 1                                                                                                                 |     
    0x00021c64 dmb ish                                                                                                                   |     __asm ("dmb ish");
                                                                                                                                         |     if (r3 != 1) {
    0x00021c68 bne 0x21c16                                                                                                               |         goto label_0;
                                                                                                                                         |     }
                                                                                                                                         | label_3:
    0x00021c6a ldr r3, [r0]                                                                                                              |     r3 = *(r0);
    0x00021c6c ldr r3, [r3, 0xc]                                                                                                         |     r3 = *((r3 + 0xc));
    0x00021c6e blx r3                                                                                                                    |     uint32_t (*r3)(uint32_t) (r3);
    0x00021c70 b 0x21c16                                                                                                                 |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x1fe78 */
                                                                                                         | #include <stdint.h>
                                                                                                         |  
    ; (fcn) method.mqtt::disconnect_options.set_token_std::shared_ptr_mqtt::token__const__int_ ()        | void method_mqtt::disconnect_options_set_token_std::shared_ptr_mqtt::token_const_int_ (int16_t arg1, uint32_t arg2, int16_t arg3) {
                                                                                                         |     uint32_t var_4h;
                                                                                                         |     r0 = arg1;
                                                                                                         |     r1 = arg2;
                                                                                                         |     r2 = arg3;
                                                                                                         |     /* mqtt::disconnect_options::set_token(std::shared_ptr<qtt::token> const&, int) */
    0x0001fe78 push.w {r4, r5, r6, r7, r8, sb, lr}                                                       |     
    0x0001fe7c mov r5, r1                                                                                |     r5 = r1;
    0x0001fe7e ldr r6, [r0, 0x38]                                                                        |     r6 = *((r0 + 0x38));
    0x0001fe80 sub sp, 0xc                                                                               |     
    0x0001fe82 mov r4, r0                                                                                |     r4 = r0;
    0x0001fe84 mov r7, r2                                                                                |     r7 = r2;
    0x0001fe86 ldrd r3, r1, [r1]                                                                         |     __asm ("ldrd r3, r1, [r1]");
    0x0001fe8a ldr.w r8, [pc, 0x108]                                                                     |     r8 = *(0x0001ff94);
    0x0001fe8e cmp r1, r6                                                                                |     
    0x0001fe90 str r3, [r0, 0x34]                                                                        |     *((r0 + 0x34)) = r3;
    0x0001fe92 add r8, pc                                                                                |     r8 += pc;
                                                                                                         |     if (r1 != r6) {
    0x0001fe94 beq 0x1febe                                                                               |         
    0x0001fe96 cmp r1, 0                                                                                 |         
                                                                                                         |         if (r1 == 0) {
    0x0001fe98 beq 0x1ff18                                                                               |             goto label_4;
                                                                                                         |         }
    0x0001fe9a ldr r2, [pc, 0xfc]                                                                        |         r2 = *(0x1ff9a);
    0x0001fe9c ldr.w sb, [r8, r2]                                                                        |         sb = *((r8 + r2));
    0x0001fea0 ldrb.w r2, [sb]                                                                           |         r2 = *(sb);
                                                                                                         |         if (r2 == 0) {
    0x0001fea4 cbz r2, 0x1fefe                                                                           |             goto label_5;
                                                                                                         |         }
    0x0001fea6 ldr r2, [r1, 4]                                                                           |         r2 = *((r1 + 4));
    0x0001fea8 adds r2, 1                                                                                |         r2++;
    0x0001feaa str r2, [r1, 4]                                                                           |         *((r1 + 4)) = r2;
                                                                                                         |         if (r6 != 0) {
    0x0001feac cbz r6, 0x1febc                                                                           |             
                                                                                                         | label_1:
    0x0001feae ldr r3, [r6, 4]                                                                           |             r3 = *((r6 + 4));
    0x0001feb0 cmp r3, 1                                                                                 |             
    0x0001feb2 add.w r2, r3, -1                                                                          |             r2 = r3 + -1;
    0x0001feb6 str r2, [r6, 4]                                                                           |             *((r6 + 4)) = r2;
                                                                                                         |             if (r3 == 1) {
    0x0001feb8 beq 0x1ff48                                                                               |                 goto label_6;
                                                                                                         |             }
                                                                                                         | label_0:
    0x0001feba ldr r3, [r4, 0x34]                                                                        |             r3 = *((r4 + 0x34));
                                                                                                         |         }
                                                                                                         | label_2:
    0x0001febc str r1, [r4, 0x38]                                                                        |         *((r4 + 0x38)) = r1;
                                                                                                         |     }
    0x0001febe str r3, [r4, 0x14]                                                                        |     *((r4 + 0x14)) = r3;
    0x0001fec0 movs r3, 0                                                                                |     r3 = 0;
    0x0001fec2 ldr r1, [r5]                                                                              |     r1 = *(r5);
    0x0001fec4 strd r3, r3, [r4, 0xc]                                                                    |     __asm ("strd r3, r3, [r4, 0xc]");
    0x0001fec8 strd r3, r3, [r4, 0x2c]                                                                   |     __asm ("strd r3, r3, [r4, 0x2c]");
                                                                                                         |     if (r1 != 0) {
    0x0001fecc cbz r1, 0x1fee2                                                                           |         
    0x0001fece cmp r7, 4                                                                                 |         
                                                                                                         |         if (r7 <= 4) {
    0x0001fed0 ble 0x1fee8                                                                               |             goto label_7;
                                                                                                         |         }
    0x0001fed2 ldr r2, [pc, 0xc8]                                                                        |         r2 = *(0x1ff9e);
    0x0001fed4 ldr r3, [pc, 0xc8]                                                                        |         r3 = *(0x1ffa0);
    0x0001fed6 ldr.w r2, [r8, r2]                                                                        |         r2 = *((r8 + r2));
    0x0001feda str r2, [r4, 0x2c]                                                                        |         *((r4 + 0x2c)) = r2;
    0x0001fedc ldr.w r3, [r8, r3]                                                                        |         r3 = *((r8 + r3));
    0x0001fee0 str r3, [r4, 0x30]                                                                        |         *((r4 + 0x30)) = r3;
                                                                                                         |     }
    0x0001fee2 add sp, 0xc                                                                               |     
    0x0001fee4 pop.w {r4, r5, r6, r7, r8, sb, pc}                                                        |     
                                                                                                         | label_7:
    0x0001fee8 ldr r2, [pc, 0xb8]                                                                        |     r2 = *(0x1ffa4);
    0x0001feea ldr r3, [pc, 0xbc]                                                                        |     r3 = *(0x1ffaa);
    0x0001feec ldr.w r2, [r8, r2]                                                                        |     r2 = *((r8 + r2));
    0x0001fef0 str r2, [r4, 0xc]                                                                         |     *((r4 + 0xc)) = r2;
    0x0001fef2 ldr.w r3, [r8, r3]                                                                        |     r3 = *((r8 + r3));
    0x0001fef6 str r3, [r4, 0x10]                                                                        |     *((r4 + 0x10)) = r3;
    0x0001fef8 add sp, 0xc                                                                               |     
    0x0001fefa pop.w {r4, r5, r6, r7, r8, sb, pc}                                                        |     
                                                                                                         | label_5:
    0x0001fefe adds r3, r1, 4                                                                            |     r3 = r1 + 4;
    0x0001ff00 dmb ish                                                                                   |     __asm ("dmb ish");
                                                                                                         |     do {
    0x0001ff04 ldrex r0, [r3]                                                                            |         __asm ("ldrex r0, [r3]");
    0x0001ff08 adds r0, 1                                                                                |         r0++;
    0x0001ff0a strex r2, r0, [r3]                                                                        |         __asm ("strex r2, r0, [r3]");
    0x0001ff0e cmp r2, 0                                                                                 |         
    0x0001ff10 bne 0x1ff04                                                                               |         
                                                                                                         |     } while (r2 != 0);
    0x0001ff12 dmb ish                                                                                   |     __asm ("dmb ish");
    0x0001ff16 ldr r6, [r4, 0x38]                                                                        |     r6 = *((r4 + 0x38));
                                                                                                         | label_4:
    0x0001ff18 cmp r6, 0                                                                                 |     
                                                                                                         |     if (r6 == 0) {
    0x0001ff1a beq 0x1feba                                                                               |         goto label_0;
                                                                                                         |     }
    0x0001ff1c ldr r3, [pc, 0x78]                                                                        |     r3 = *(0x1ff98);
    0x0001ff1e ldr.w sb, [r8, r3]                                                                        |     sb = *((r8 + r3));
    0x0001ff22 ldrb.w r3, [sb]                                                                           |     r3 = *(sb);
    0x0001ff26 cmp r3, 0                                                                                 |     
                                                                                                         |     if (r3 != 0) {
    0x0001ff28 bne 0x1feae                                                                               |         goto label_1;
                                                                                                         |     }
    0x0001ff2a adds r2, r6, 4                                                                            |     r2 = r6 + 4;
    0x0001ff2c dmb ish                                                                                   |     __asm ("dmb ish");
                                                                                                         |     do {
    0x0001ff30 ldrex r3, [r2]                                                                            |         __asm ("ldrex r3, [r2]");
    0x0001ff34 subs r0, r3, 1                                                                            |         r0 = r3 - 1;
    0x0001ff36 strex ip, r0, [r2]                                                                        |         __asm ("strex ip, r0, [r2]");
    0x0001ff3a cmp.w ip, 0                                                                               |         
    0x0001ff3e bne 0x1ff30                                                                               |         
                                                                                                         |     } while (ip != 0);
    0x0001ff40 cmp r3, 1                                                                                 |     
    0x0001ff42 dmb ish                                                                                   |     __asm ("dmb ish");
                                                                                                         |     if (r3 != 1) {
    0x0001ff46 bne 0x1feba                                                                               |         goto label_0;
                                                                                                         |     }
                                                                                                         | label_6:
    0x0001ff48 ldr r3, [r6]                                                                              |     r3 = *(r6);
    0x0001ff4a mov r0, r6                                                                                |     r0 = r6;
    0x0001ff4c str r1, [sp, 4]                                                                           |     var_4h = r1;
    0x0001ff4e ldr r3, [r3, 8]                                                                           |     r3 = *((r3 + 8));
    0x0001ff50 blx r3                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001ff52 ldrb.w r3, [sb]                                                                           |     r3 = *(sb);
    0x0001ff56 ldr r1, [sp, 4]                                                                           |     r1 = var_4h;
                                                                                                         |     if (r3 == 0) {
    0x0001ff58 cbz r3, 0x1ff74                                                                           |         goto label_8;
                                                                                                         |     }
    0x0001ff5a ldr r3, [r6, 8]                                                                           |     r3 = *((r6 + 8));
    0x0001ff5c subs r2, r3, 1                                                                            |     r2 = r3 - 1;
    0x0001ff5e str r2, [r6, 8]                                                                           |     *((r6 + 8)) = r2;
                                                                                                         | label_3:
    0x0001ff60 cmp r3, 1                                                                                 |     
                                                                                                         |     if (r3 != 1) {
    0x0001ff62 bne 0x1feba                                                                               |         goto label_0;
                                                                                                         |     }
    0x0001ff64 ldr r3, [r6]                                                                              |     r3 = *(r6);
    0x0001ff66 mov r0, r6                                                                                |     r0 = r6;
    0x0001ff68 str r1, [sp, 4]                                                                           |     var_4h = r1;
    0x0001ff6a ldr r3, [r3, 0xc]                                                                         |     r3 = *((r3 + 0xc));
    0x0001ff6c blx r3                                                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001ff6e ldr r3, [r4, 0x34]                                                                        |     r3 = *((r4 + 0x34));
    0x0001ff70 ldr r1, [sp, 4]                                                                           |     r1 = var_4h;
    0x0001ff72 b 0x1febc                                                                                 |     goto label_2;
                                                                                                         | label_8:
    0x0001ff74 add.w r2, r6, 8                                                                           |     r2 = r6 + 8;
    0x0001ff78 dmb ish                                                                                   |     __asm ("dmb ish");
                                                                                                         |     do {
    0x0001ff7c ldrex r3, [r2]                                                                            |         __asm ("ldrex r3, [r2]");
    0x0001ff80 subs r0, r3, 1                                                                            |         r0 = r3 - 1;
    0x0001ff82 strex ip, r0, [r2]                                                                        |         __asm ("strex ip, r0, [r2]");
    0x0001ff86 cmp.w ip, 0                                                                               |         
    0x0001ff8a bne 0x1ff7c                                                                               |         
                                                                                                         |     } while (ip != 0);
    0x0001ff8c dmb ish                                                                                   |     __asm ("dmb ish");
    0x0001ff90 b 0x1ff60                                                                                 |     goto label_3;
                                                                                                         | }
    ; assembly                                                                           | /* r2dec pseudo code output */
                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x2031c */
                                                                                         | #include <stdint.h>
                                                                                         |  
    ; (fcn) method.mqtt::iclient_persistence.persistence_keys_void__char__int_ ()        | void method_mqtt::iclient_persistence_persistence_keys_void_char_int_ (uint32_t arg1, uint32_t arg2, uint32_t arg3) {
                                                                                         |     int16_t var_4h;
                                                                                         |     int32_t var_4h_2;
                                                                                         |     int16_t var_10h;
                                                                                         |     int16_t var_1ch;
                                                                                         |     r0 = arg1;
                                                                                         |     r1 = arg2;
                                                                                         |     r2 = arg3;
                                                                                         |     /* mqtt::iclient_persistence::persistence_keys(void*, char***, int*) */
    0x0002031c cmp r1, 0                                                                 |     
    0x0002031e it ne                                                                     |     
                                                                                         |     if (r1 != 0) {
    0x00020320 cmpne r2, 0                                                               |         __asm ("cmpne r2, 0");
                                                                                         |     }
    0x00020322 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                               |     
    0x00020326 ite ne                                                                    |     
                                                                                         |     if (r1 == 0) {
    0x00020328 movne r3, 1                                                               |         r3 = 1;
                                                                                         |     }
                                                                                         |     if (r1 != 0) {
    0x0002032a moveq r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x0002032c mov r8, r1                                                                |     r8 = r1;
    0x0002032e cmp r0, 0                                                                 |     
    0x00020330 ite eq                                                                    |     
                                                                                         |     if (r0 != 0) {
    0x00020332 moveq r3, 0                                                               |         r3 = 0;
                                                                                         |     }
                                                                                         |     if (r0 == 0) {
    0x00020334 andne r3, r3, 1                                                           |         r3 &= 1;
                                                                                         |     }
    0x00020338 mov r1, r0                                                                |     r1 = r0;
    0x0002033a ldr r0, [pc, 0x110]                                                       |     
    0x0002033c mov r4, r2                                                                |     r4 = r2;
    0x0002033e ldr r2, [pc, 0x110]                                                       |     r2 = *(0x20452);
    0x00020340 sub sp, 0x24                                                              |     
    0x00020342 add r0, pc                                                                |     r0 = 0x40794;
    0x00020344 ldr r2, [r0, r2]                                                          |     
    0x00020346 ldr r2, [r2]                                                              |     r2 = *(0x40794);
    0x00020348 str r2, [sp, 0x1c]                                                        |     var_1ch = r2;
    0x0002034a mov.w r2, 0                                                               |     r2 = 0;
    0x0002034e cmp r3, 0                                                                 |     
                                                                                         |     if (r3 == 0) {
    0x00020350 beq 0x20410                                                               |         goto label_3;
                                                                                         |     }
    0x00020352 ldr r3, [r1]                                                              |     r3 = *(r1);
    0x00020354 add r0, sp, 4                                                             |     r0 += var_4h;
    0x00020356 ldr r3, [r3, 0x18]                                                        |     r3 = *((r3 + 0x18));
    0x00020358 blx r3                                                                    |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0002035a ldrd r2, r7, [sp, 4]                                                      |     __asm ("ldrd r2, r7, [var_4h]");
    0x0002035e movw r3, 0xaaab                                                           |     
                                                                                         |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00020362 movt r3, 0xaaaa                                                           |     r3 = 0xaaaaaaab;
    0x00020366 subs r7, r7, r2                                                           |     r7 -= r2;
    0x00020368 asrs r7, r7, 3                                                            |     r7 >>= 3;
    0x0002036a mul r7, r3, r7                                                            |     r7 = r3 * r7;
    0x0002036e str r7, [r4]                                                              |     *(r4) = r7;
                                                                                         |     if (r7 != 0) {
    0x00020370 cbnz r7, 0x203c4                                                          |         goto label_4;
                                                                                         |     }
    0x00020372 str.w r7, [r8]                                                            |     __asm ("str.w r7, [r8]");
                                                                                         | label_0:
    0x00020376 ldr r0, [sp, 0x10]                                                        |     r0 = var_10h;
                                                                                         |     if (r0 != 0) {
    0x00020378 cbz r0, 0x2037e                                                           |         
    0x0002037a blx 0xe9a4                                                                |         fcn_0000e9a4 ();
                                                                                         |     }
    0x0002037e ldrd r5, r6, [sp, 4]                                                      |     __asm ("ldrd r5, r6, [var_4h]");
    0x00020382 cmp r5, r6                                                                |     
                                                                                         |     if (r5 == r6) {
    0x00020384 beq 0x203a0                                                               |         goto label_5;
                                                                                         |     }
    0x00020386 add.w r4, r5, 8                                                           |     r4 = r5 + 8;
                                                                                         |     do {
    0x0002038a ldr r0, [r4, -0x8]                                                        |         r0 = *((r4 - 0x8));
    0x0002038e cmp r4, r0                                                                |         
                                                                                         |         if (r4 != r0) {
    0x00020390 beq 0x20396                                                               |             
    0x00020392 blx 0xe9a4                                                                |             fcn_0000e9a4 ();
                                                                                         |         }
    0x00020396 adds r5, 0x18                                                             |         r5 += 0x18;
    0x00020398 adds r4, 0x18                                                             |         r4 += 0x18;
    0x0002039a cmp r6, r5                                                                |         
    0x0002039c bne 0x2038a                                                               |         
                                                                                         |     } while (r6 != r5);
    0x0002039e ldr r6, [sp, 4]                                                           |     r6 = var_4h;
                                                                                         |     if (r6 != 0) {
                                                                                         | label_5:
    0x000203a0 cbz r6, 0x203a8                                                           |         
    0x000203a2 mov r0, r6                                                                |         r0 = r6;
    0x000203a4 blx 0xe9a4                                                                |         fcn_0000e9a4 ();
                                                                                         |     }
    0x000203a8 movs r0, 0                                                                |     r0 = 0;
                                                                                         | label_1:
    0x000203aa ldr r2, [pc, 0xa8]                                                        |     
    0x000203ac ldr r3, [pc, 0xa0]                                                        |     r3 = *(0x20450);
    0x000203ae add r2, pc                                                                |     r2 = 0x40808;
    0x000203b0 ldr r3, [r2, r3]                                                          |     r3 = *(0x40808);
    0x000203b2 ldr r2, [r3]                                                              |     r2 = *(0x40808);
    0x000203b4 ldr r3, [sp, 0x1c]                                                        |     r3 = var_1ch;
    0x000203b6 eors r2, r3                                                               |     r2 ^= r3;
    0x000203b8 mov.w r3, 0                                                               |     r3 = 0;
                                                                                         |     if (r2 != r3) {
    0x000203bc bne 0x20416                                                               |         goto label_6;
                                                                                         |     }
    0x000203be add sp, 0x24                                                              |     
    0x000203c0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                |     
                                                                                         | label_4:
    0x000203c4 lsls r0, r7, 2                                                            |     r0 = r7 << 2;
    0x000203c6 blx 0xe6d4                                                                |     fcn_0000e6d4 ();
    0x000203ca movs r5, 0                                                                |     r5 = 0;
    0x000203cc str.w r0, [r8]                                                            |     __asm ("str.w r0, [r8]");
    0x000203d0 mov r6, r5                                                                |     r6 = r5;
    0x000203d2 mov sb, r5                                                                |     sb = r5;
                                                                                         |     do {
    0x000203d4 ldr r3, [sp, 4]                                                           |         r3 = var_4h;
    0x000203d6 add r3, r5                                                                |         r3 += r5;
    0x000203d8 ldr.w sl, [r3, 4]                                                         |         sl = *((r3 + 4));
    0x000203dc add.w fp, sl, 1                                                           |         
    0x000203e0 mov r0, fp                                                                |         r0 = fp;
    0x000203e2 blx 0xe6d4                                                                |         fcn_0000e6d4 ();
    0x000203e6 ldr r3, [sp, 4]                                                           |         r3 = var_4h;
    0x000203e8 mov r4, r0                                                                |         r4 = r0;
    0x000203ea mov r2, fp                                                                |         r2 = fp;
    0x000203ec ldr r1, [r3, r5]                                                          |         r1 = *((r3 + r5));
    0x000203ee adds r5, 0x18                                                             |         r5 += 0x18;
    0x000203f0 blx 0xed54                                                                |         fcn_0000ed54 ();
    0x000203f4 strb.w sb, [r4, sl]                                                       |         *((r4 + sl)) = sb;
    0x000203f8 ldr.w r3, [r8]                                                            |         r3 = *(r8);
    0x000203fc str.w r4, [r3, r6, lsl 2]                                                 |         __asm ("str.w r4, [r3, r6, lsl 2]");
    0x00020400 adds r6, 1                                                                |         r6++;
    0x00020402 cmp r6, r7                                                                |         
    0x00020404 bne 0x203d4                                                               |         
                                                                                         |     } while (r6 != r7);
    0x00020406 b 0x20376                                                                 |     goto label_0;
                                                                                         | label_2:
    0x00020408 blx 0xe71c                                                                |     fcn_0000e71c ();
    0x0002040c blx 0xec7c                                                                |     fcn_0000ec7c ();
                                                                                         | label_3:
    0x00020410 mvn r0, 1                                                                 |     r0 = ~1;
    0x00020414 b 0x203aa                                                                 |     goto label_1;
                                                                                         | label_6:
    0x00020416 blx 0xea48                                                                |     fcn_0000ea48 ();
    0x0002041a ldr r3, [sp, 0x10]                                                        |     r3 = var_10h;
    0x0002041c mov r4, r0                                                                |     r4 = r0;
                                                                                         |     if (r3 != 0) {
    0x0002041e cbz r3, 0x20426                                                           |         
    0x00020420 mov r0, r3                                                                |         r0 = r3;
    0x00020422 blx 0xe9a4                                                                |         fcn_0000e9a4 ();
                                                                                         |     }
    0x00020426 ldrd r5, r6, [sp, 4]                                                      |     __asm ("ldrd r5, r6, [var_4h]");
                                                                                         |     do {
    0x0002042a cmp r6, r5                                                                |         
                                                                                         |         if (r6 == r5) {
    0x0002042c beq 0x20440                                                               |             goto label_7;
                                                                                         |         }
    0x0002042e mov r3, r5                                                                |         r3 = r5;
    0x00020430 ldr r0, [r3], 8                                                           |         r0 = *(r3);
                                                                                         |         r3 += 8;
    0x00020434 cmp r0, r3                                                                |         
                                                                                         |         if (r0 != r3) {
    0x00020436 beq 0x2043c                                                               |             
    0x00020438 blx 0xe9a4                                                                |             fcn_0000e9a4 ();
                                                                                         |         }
    0x0002043c adds r5, 0x18                                                             |         r5 += 0x18;
    0x0002043e b 0x2042a                                                                 |         
                                                                                         |     } while (1);
                                                                                         | label_7:
    0x00020440 ldr r0, [sp, 4]                                                           |     r0 = var_4h;
                                                                                         |     if (r0 != 0) {
    0x00020442 cbz r0, 0x20448                                                           |         
    0x00020444 blx 0xe9a4                                                                |         fcn_0000e9a4 ();
                                                                                         |     }
    0x00020448 mov r0, r4                                                                |     r0 = r4;
    0x0002044a b 0x20408                                                                 |     goto label_2;
                                                                                         | }
    ; assembly                                                                                   | /* r2dec pseudo code output */
                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x2148c */
                                                                                                 | #include <stdint.h>
                                                                                                 |  
    ; (fcn) method.mqtt::message.message_mqtt::buffer_ref_char___MQTTAsync_message_const_ ()     | void method_mqtt::message_message_mqtt::buffer_ref_char_MQTTAsync_message_const_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                 |     int16_t var_0h;
                                                                                                 |     int16_t var_14h;
                                                                                                 |     int16_t var_18h;
                                                                                                 |     int16_t var_1ch;
                                                                                                 |     r0 = arg1;
                                                                                                 |     r1 = arg2;
                                                                                                 |     r2 = arg3;
                                                                                                 |     /* mqtt::message::message(mqtt::buffer_ref<char>, MQTTAsync_message const&) */
    0x0002148c push.w {r4, r5, r6, r7, r8, sb, sl, lr}                                           |     
    0x00021490 mov r5, r2                                                                        |     r5 = r2;
    0x00021492 mov lr, r2                                                                        |     lr = r2;
    0x00021494 ldr r2, [pc, 0x168]                                                               |     
    0x00021496 sub sp, 0x20                                                                      |     
    0x00021498 mov r4, r0                                                                        |     r4 = r0;
    0x0002149a ldr r3, [pc, 0x168]                                                               |     r3 = *(0x21606);
    0x0002149c mov r7, r1                                                                        |     r7 = r1;
    0x0002149e add r2, pc                                                                        |     r2 = 0x42aa2;
    0x000214a0 mov ip, r0                                                                        |     
    0x000214a2 mov.w sl, 0                                                                       |     sl = 0;
    0x000214a6 ldr.w r8, [pc, 0x160]                                                             |     r8 = *(0x00021608);
    0x000214aa ldr r3, [r2, r3]                                                                  |     
    0x000214ac mov sb, sp                                                                        |     sb = sp;
    0x000214ae add r8, pc                                                                        |     r8 += pc;
    0x000214b0 ldr r3, [r3]                                                                      |     r3 = *(0x42aa2);
    0x000214b2 str r3, [sp, 0x1c]                                                                |     var_1ch = r3;
    0x000214b4 mov.w r3, 0                                                                       |     r3 = 0;
    0x000214b8 ldm.w lr!, {r0, r1, r2, r3}                                                       |     r0 = *(lr!);
                                                                                                 |     r1 = *((lr! + 4));
                                                                                                 |     r2 = *((lr! + 8));
                                                                                                 |     r3 = *((lr! + 12));
    0x000214bc stm.w ip!, {r0, r1, r2, r3}                                                       |     *(ip!) = r0;
                                                                                                 |     *((ip! + 4)) = r1;
                                                                                                 |     *((ip! + 8)) = r2;
                                                                                                 |     *((ip! + 12)) = r3;
    0x000214c0 ldm.w lr!, {r0, r1, r2, r3}                                                       |     r0 = *(lr!);
                                                                                                 |     r1 = *((lr! + 4));
                                                                                                 |     r2 = *((lr! + 8));
                                                                                                 |     r3 = *((lr! + 12));
    0x000214c4 stm.w ip!, {r0, r1, r2, r3}                                                       |     *(ip!) = r0;
                                                                                                 |     *((ip! + 4)) = r1;
                                                                                                 |     *((ip! + 8)) = r2;
                                                                                                 |     *((ip! + 12)) = r3;
    0x000214c8 ldm.w lr, {r0, r1, r2, r3}                                                        |     r0 = *(lr);
                                                                                                 |     r1 = *((lr + 4));
                                                                                                 |     r2 = *((lr + 8));
                                                                                                 |     r3 = *((lr + 12));
    0x000214cc stm.w ip, {r0, r1, r2, r3}                                                        |     *(ip) = r0;
                                                                                                 |     *((ip + 4)) = r1;
                                                                                                 |     *((ip + 8)) = r2;
                                                                                                 |     *((ip + 12)) = r3;
    0x000214d0 add.w r1, r5, 0x20                                                                |     r1 = r5 + 0x20;
    0x000214d4 ldr r3, [r7]                                                                      |     r3 = *(r7);
    0x000214d6 mov r0, sb                                                                        |     r0 = sb;
    0x000214d8 strd r3, sl, [r4, 0x30]                                                           |     __asm ("strd r3, sl, [r4, 0x30]");
    0x000214dc ldr r3, [r7, 4]                                                                   |     r3 = *((r7 + 4));
    0x000214de str r3, [r4, 0x34]                                                                |     *((r4 + 0x34)) = r3;
    0x000214e0 strd sl, sl, [r7]                                                                 |     __asm ("strd sl, sl, [r7]");
    0x000214e4 strd sl, sl, [r4, 0x38]                                                           |     __asm ("strd sl, sl, [r4, 0x38]");
    0x000214e8 blx 0xeb24                                                                        |     r0 = fcn_0000eb24 ();
    0x000214ec ldm.w sb, {r0, r1, r2, r3}                                                        |     r0 = *(sb);
                                                                                                 |     r1 = *((sb + 4));
                                                                                                 |     r2 = *((sb + 8));
                                                                                                 |     r3 = *((sb + 12));
    0x000214f0 add.w r6, r4, 0x40                                                                |     r6 = r4 + 0x40;
    0x000214f4 stm.w r6, {r0, r1, r2, r3}                                                        |     *(r6) = r0;
                                                                                                 |     *((r6 + 4)) = r1;
                                                                                                 |     *((r6 + 8)) = r2;
                                                                                                 |     *((r6 + 12)) = r3;
    0x000214f8 movs r0, 0x24                                                                     |     r0 = 0x24;
    0x000214fa ldrd r5, r7, [r5, 8]                                                              |     __asm ("ldrd r5, r7, [r5, 8]");
    0x000214fe blx 0xe5ec                                                                        |     fcn_0000e5ec ();
    0x00021502 ldr r3, [pc, 0x108]                                                               |     r3 = *(0x2160e);
    0x00021504 adds r2, r7, r5                                                                   |     r2 = r7 + r5;
    0x00021506 mov r5, r0                                                                        |     r5 = r0;
    0x00021508 movs r0, 1                                                                        |     r0 = 1;
    0x0002150a strd r0, r0, [r5, 4]                                                              |     __asm ("strd r0, r0, [r5, 4]");
    0x0002150e mov r1, r7                                                                        |     r1 = r7;
    0x00021510 ldr.w r3, [r8, r3]                                                                |     r3 = *((r8 + r3));
    0x00021514 mov r7, r5                                                                        |     r7 = r5;
    0x00021516 adds r3, 8                                                                        |     r3 += 8;
    0x00021518 str r3, [r7], 0xc                                                                 |     *(r7) = r3;
                                                                                                 |     r7 += 0xc;
    0x0002151c add.w r3, r5, 0x14                                                                |     r3 = r5 + 0x14;
    0x00021520 mov r0, r7                                                                        |     r0 = r7;
    0x00021522 str r3, [r5, 0xc]                                                                 |     *((r5 + 0xc)) = r3;
    0x00021524 bl 0x20774                                                                        |     fcn_00020774 (r0, r1, r2);
    0x00021528 add r1, sp, 0x14                                                                  |     r1 += var_14h;
    0x0002152a mov r0, r4                                                                        |     r0 = r4;
    0x0002152c str r7, [sp, 0x14]                                                                |     var_14h = r7;
    0x0002152e str r5, [sp, 0x18]                                                                |     var_18h = r5;
    0x00021530 blx 0xedd8                                                                        |     fcn_0000edd8 ();
    0x00021534 ldr r5, [sp, 0x18]                                                                |     r5 = var_18h;
                                                                                                 |     if (r5 == 0) {
    0x00021536 cbz r5, 0x2154c                                                                   |         goto label_0;
                                                                                                 |     }
    0x00021538 ldr r3, [pc, 0xd4]                                                                |     r3 = *(0x21610);
    0x0002153a ldr.w r7, [r8, r3]                                                                |     r7 = *((r8 + r3));
    0x0002153e ldrb r3, [r7]                                                                     |     r3 = *(r7);
                                                                                                 |     if (r3 == 0) {
    0x00021540 cbz r3, 0x21594                                                                   |         goto label_4;
                                                                                                 |     }
    0x00021542 ldr r3, [r5, 4]                                                                   |     r3 = *((r5 + 4));
    0x00021544 subs r2, r3, 1                                                                    |     r2 = r3 - 1;
    0x00021546 str r2, [r5, 4]                                                                   |     *((r5 + 4)) = r2;
                                                                                                 | label_1:
    0x00021548 cmp r3, 1                                                                         |     
    0x0002154a beq 0x21574                                                                       |     
                                                                                                 |     while (r3 != 1) {
                                                                                                 | label_0:
    0x0002154c ldm.w r6, {r0, r1, r2, r3}                                                        |         r0 = *(r6);
                                                                                                 |         r1 = *((r6 + 4));
                                                                                                 |         r2 = *((r6 + 8));
                                                                                                 |         r3 = *((r6 + 12));
    0x00021550 add.w r5, r4, 0x20                                                                |         r5 = r4 + 0x20;
    0x00021554 stm.w r5, {r0, r1, r2, r3}                                                        |         *(r5) = r0;
                                                                                                 |         *((r5 + 4)) = r1;
                                                                                                 |         *((r5 + 8)) = r2;
                                                                                                 |         *((r5 + 12)) = r3;
    0x00021558 ldr r2, [pc, 0xb8]                                                                |         
    0x0002155a ldr r3, [pc, 0xa8]                                                                |         r3 = *(0x21606);
    0x0002155c add r2, pc                                                                        |         r2 = 0x42b74;
    0x0002155e ldr r3, [r2, r3]                                                                  |         r3 = *(0x42b74);
    0x00021560 ldr r2, [r3]                                                                      |         r2 = *(0x42b74);
    0x00021562 ldr r3, [sp, 0x1c]                                                                |         r3 = var_1ch;
    0x00021564 eors r2, r3                                                                       |         r2 ^= r3;
    0x00021566 mov.w r3, 0                                                                       |         r3 = 0;
                                                                                                 |         if (r2 != r3) {
    0x0002156a bne 0x215ca                                                                       |             goto label_5;
                                                                                                 |         }
    0x0002156c mov r0, r4                                                                        |         r0 = r4;
    0x0002156e add sp, 0x20                                                                      |         
    0x00021570 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}                                            |         
    0x00021574 ldr r3, [r5]                                                                      |         r3 = *(r5);
    0x00021576 mov r0, r5                                                                        |         r0 = r5;
    0x00021578 ldr r3, [r3, 8]                                                                   |         r3 = *((r3 + 8));
    0x0002157a blx r3                                                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0002157c ldrb r3, [r7]                                                                     |         r3 = *(r7);
                                                                                                 |         if (r3 == 0) {
    0x0002157e cbz r3, 0x215ae                                                                   |             goto label_6;
                                                                                                 |         }
    0x00021580 ldr r3, [r5, 8]                                                                   |         r3 = *((r5 + 8));
    0x00021582 subs r2, r3, 1                                                                    |         r2 = r3 - 1;
    0x00021584 str r2, [r5, 8]                                                                   |         *((r5 + 8)) = r2;
                                                                                                 | label_2:
    0x00021586 cmp r3, 1                                                                         |         
    0x00021588 bne 0x2154c                                                                       |         
                                                                                                 |     }
    0x0002158a ldr r3, [r5]                                                                      |     r3 = *(r5);
    0x0002158c mov r0, r5                                                                        |     r0 = r5;
    0x0002158e ldr r3, [r3, 0xc]                                                                 |     r3 = *((r3 + 0xc));
    0x00021590 blx r3                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00021592 b 0x2154c                                                                         |     goto label_0;
                                                                                                 | label_4:
    0x00021594 adds r2, r5, 4                                                                    |     r2 = r5 + 4;
    0x00021596 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x0002159a ldrex r3, [r2]                                                                    |         __asm ("ldrex r3, [r2]");
    0x0002159e subs r1, r3, 1                                                                    |         r1 = r3 - 1;
    0x000215a0 strex r0, r1, [r2]                                                                |         __asm ("strex r0, r1, [r2]");
    0x000215a4 cmp r0, 0                                                                         |         
    0x000215a6 bne 0x2159a                                                                       |         
                                                                                                 |     } while (r0 != 0);
    0x000215a8 dmb ish                                                                           |     __asm ("dmb ish");
    0x000215ac b 0x21548                                                                         |     goto label_1;
                                                                                                 | label_6:
    0x000215ae add.w r2, r5, 8                                                                   |     r2 = r5 + 8;
    0x000215b2 dmb ish                                                                           |     __asm ("dmb ish");
                                                                                                 |     do {
    0x000215b6 ldrex r3, [r2]                                                                    |         __asm ("ldrex r3, [r2]");
    0x000215ba subs r1, r3, 1                                                                    |         r1 = r3 - 1;
    0x000215bc strex r0, r1, [r2]                                                                |         __asm ("strex r0, r1, [r2]");
    0x000215c0 cmp r0, 0                                                                         |         
    0x000215c2 bne 0x215b6                                                                       |         
                                                                                                 |     } while (r0 != 0);
    0x000215c4 dmb ish                                                                           |     __asm ("dmb ish");
    0x000215c8 b 0x21586                                                                         |     goto label_2;
                                                                                                 | label_5:
    0x000215ca blx 0xea48                                                                        |     fcn_0000ea48 ();
    0x000215ce b 0x215dc                                                                         |     
                                                                                                 |     while (r0 == 0) {
                                                                                                 | label_3:
    0x000215d6 mov r0, r6                                                                        |         r0 = r6;
    0x000215d8 blx 0xedb4                                                                        |         fcn_0000edb4 ();
    0x000215dc ldr r0, [r4, 0x3c]                                                                |         r0 = *((r4 + 0x3c));
                                                                                                 |         if (r0 != 0) {
    0x000215de cbz r0, 0x215e4                                                                   |             
    0x000215e0 bl 0x18a84                                                                        |             fcn_00018a84 (r0);
                                                                                                 |         }
    0x000215e4 ldr r0, [r4, 0x34]                                                                |         r0 = *((r4 + 0x34));
                                                                                                 |         if (r0 != 0) {
    0x000215e6 cbz r0, 0x215ec                                                                   |             
    0x000215e8 bl 0x18a84                                                                        |             r0 = fcn_00018a84 (r0);
                                                                                                 |         }
    0x000215ec blx 0xea54                                                                        |         fcn_0000ea54 ();
    0x000215f0 ldr r0, [sp, 0x18]                                                                |         r0 = var_18h;
    0x000215f2 cmp r0, 0                                                                         |         
    0x000215f4 beq 0x215d6                                                                       |         
                                                                                                 |     }
    0x000215f6 bl 0x18a84                                                                        |     fcn_00018a84 (r0);
    0x000215fa b 0x215d6                                                                         |     goto label_3;
                                                                                                 | }
    ; assembly                                                                                                                       | /* r2dec pseudo code output */
                                                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x21268 */
                                                                                                                                     | #include <stdint.h>
                                                                                                                                     |  
    ; (fcn) method.mqtt::message.message_mqtt::buffer_ref_char___void_const__unsigned_int__int__bool__mqtt::properties_const_ ()     | void method_mqtt::message_message_mqtt::buffer_ref_char_void_const_unsigned_int_int_bool_mqtt::properties_const_ (int16_t arg_0h, int16_t arg_6ch, int16_t arg_70h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                     |     int16_t var_4h;
                                                                                                                                     |     int16_t var_8h;
                                                                                                                                     |     int16_t var_1ch;
                                                                                                                                     |     int16_t var_20h;
                                                                                                                                     |     int16_t var_24h;
                                                                                                                                     |     int16_t var_2ch;
                                                                                                                                     |     int16_t var_3ch;
                                                                                                                                     |     r0 = arg1;
                                                                                                                                     |     r1 = arg2;
                                                                                                                                     |     r2 = arg3;
                                                                                                                                     |     r3 = arg4;
                                                                                                                                     |     /* mqtt::message::message(mqtt::buffer_ref<char>, void const*, unsigned int, int, bool, mqtt::properties const&) */
    0x00021268 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                           |     
    0x0002126c mov r4, r0                                                                                                            |     r4 = r0;
    0x0002126e ldr r0, [pc, 0x1f4]                                                                                                   |     
    0x00021270 mov fp, r1                                                                                                            |     
    0x00021272 sub sp, 0x44                                                                                                          |     
    0x00021274 mov r7, r3                                                                                                            |     r7 = r3;
    0x00021276 ldr r1, [pc, 0x1f0]                                                                                                   |     r1 = *(0x2146a);
    0x00021278 mov r6, r2                                                                                                            |     r6 = r2;
    0x0002127a add r0, pc                                                                                                            |     r0 = 0x426e4;
    0x0002127c ldr.w lr, [pc, 0x1ec]                                                                                                 |     
    0x00021280 ldrb.w r3, [sp, 0x6c]                                                                                                 |     r3 = *(arg_6ch);
    0x00021284 mov ip, r4                                                                                                            |     
    0x00021286 ldr r1, [r0, r1]                                                                                                      |     
    0x00021288 mov.w sl, 0                                                                                                           |     sl = 0;
    0x0002128c add lr, pc                                                                                                            |     lr = 0x426fc;
    0x0002128e ldr.w sb, [sp, 0x70]                                                                                                  |     sb = *(arg_70h);
    0x00021292 ldr.w r8, [pc, 0x1dc]                                                                                                 |     
    0x00021296 add.w r5, r4, 0x40                                                                                                    |     r5 = r4 + 0x40;
    0x0002129a ldr r1, [r1]                                                                                                          |     r1 = *(0x426e4);
    0x0002129c str r1, [sp, 0x3c]                                                                                                    |     var_3ch = r1;
    0x0002129e mov.w r1, 0                                                                                                           |     r1 = 0;
    0x000212a2 str r3, [sp, 4]                                                                                                       |     var_4h = r3;
    0x000212a4 ldm.w lr!, {r0, r1, r2, r3}                                                                                           |     r0 = *(lr!);
                                                                                                                                     |     r1 = *((lr! + 4));
                                                                                                                                     |     r2 = *((lr! + 8));
                                                                                                                                     |     r3 = *((lr! + 12));
    0x000212a8 add r8, pc                                                                                                            |     r8 = 0x4271e;
    0x000212aa stm.w ip!, {r0, r1, r2, r3}                                                                                           |     *(ip!) = r0;
                                                                                                                                     |     *((ip! + 4)) = r1;
                                                                                                                                     |     *((ip! + 8)) = r2;
                                                                                                                                     |     *((ip! + 12)) = r3;
    0x000212ae ldm.w lr!, {r0, r1, r2, r3}                                                                                           |     r0 = *(lr!);
                                                                                                                                     |     r1 = *((lr! + 4));
                                                                                                                                     |     r2 = *((lr! + 8));
                                                                                                                                     |     r3 = *((lr! + 12));
    0x000212b2 stm.w ip!, {r0, r1, r2, r3}                                                                                           |     *(ip!) = r0;
                                                                                                                                     |     *((ip! + 4)) = r1;
                                                                                                                                     |     *((ip! + 8)) = r2;
                                                                                                                                     |     *((ip! + 12)) = r3;
    0x000212b6 ldm.w lr, {r0, r1, r2, r3}                                                                                            |     r0 = *(lr);
                                                                                                                                     |     r1 = *((lr + 4));
                                                                                                                                     |     r2 = *((lr + 8));
                                                                                                                                     |     r3 = *((lr + 12));
    0x000212ba stm.w ip, {r0, r1, r2, r3}                                                                                            |     *(ip) = r0;
                                                                                                                                     |     *((ip + 4)) = r1;
                                                                                                                                     |     *((ip + 8)) = r2;
                                                                                                                                     |     *((ip + 12)) = r3;
    0x000212be movs r0, 0x24                                                                                                         |     r0 = 0x24;
    0x000212c0 ldr.w r3, [fp]                                                                                                        |     r3 = *(fp);
    0x000212c4 strd r3, sl, [r4, 0x30]                                                                                               |     __asm ("strd r3, sl, [r4, 0x30]");
    0x000212c8 ldr.w r3, [fp, 4]                                                                                                     |     r3 = *(arg_6ch);
    0x000212cc strd sl, sl, [fp]                                                                                                     |     __asm ("strd sl, sl, [fp]");
    0x000212d0 strd sl, sl, [r4, 0x38]                                                                                               |     __asm ("strd sl, sl, [r4, 0x38]");
    0x000212d4 str r3, [r4, 0x34]                                                                                                    |     *((r4 + 0x34)) = r3;
    0x000212d6 str.w sl, [r4, 0x40]                                                                                                  |     __asm ("str.w sl, [r4, 0x40]");
    0x000212da str.w sl, [r4, 0x44]                                                                                                  |     __asm ("str.w sl, [r4, 0x44]");
    0x000212de str.w sl, [r4, 0x48]                                                                                                  |     __asm ("str.w sl, [r4, 0x48]");
    0x000212e2 str.w sl, [r4, 0x4c]                                                                                                  |     __asm ("str.w sl, [r4, 0x4c]");
    0x000212e6 blx 0xe5ec                                                                                                            |     fcn_0000e5ec ();
    0x000212ea ldr r3, [pc, 0x188]                                                                                                   |     r3 = *(0x21476);
    0x000212ec adds r2, r6, r7                                                                                                       |     r2 = r6 + r7;
    0x000212ee mov r7, r0                                                                                                            |     r7 = r0;
    0x000212f0 movs r0, 1                                                                                                            |     r0 = 1;
    0x000212f2 strd r0, r0, [r7, 4]                                                                                                  |     __asm ("strd r0, r0, [r7, 4]");
    0x000212f6 mov r1, r6                                                                                                            |     r1 = r6;
    0x000212f8 ldr.w r3, [r8, r3]                                                                                                    |     r3 = *(0x4271e);
    0x000212fc mov r6, r7                                                                                                            |     r6 = r7;
    0x000212fe adds r3, 8                                                                                                            |     r3 += 8;
    0x00021300 str r3, [r6], 0xc                                                                                                     |     *(r6) = r3;
                                                                                                                                     |     r6 += 0xc;
    0x00021304 add.w r3, r7, 0x14                                                                                                    |     r3 = r7 + 0x14;
    0x00021308 mov r0, r6                                                                                                            |     r0 = r6;
    0x0002130a str r3, [r7, 0xc]                                                                                                     |     *((r7 + 0xc)) = r3;
    0x0002130c bl 0x20774                                                                                                            |     fcn_00020774 (r0, r1, r2);
    0x00021310 add r1, sp, 0x1c                                                                                                      |     r1 += var_1ch;
    0x00021312 mov r0, r4                                                                                                            |     r0 = r4;
    0x00021314 strd r6, r7, [sp, 0x1c]                                                                                               |     __asm ("strd r6, r7, [var_1ch]");
    0x00021318 blx 0xedd8                                                                                                            |     fcn_0000edd8 ();
    0x0002131c ldr r6, [sp, 0x20]                                                                                                    |     r6 = var_20h;
                                                                                                                                     |     if (r6 == 0) {
    0x0002131e cbz r6, 0x21336                                                                                                       |         goto label_0;
                                                                                                                                     |     }
    0x00021320 ldr r3, [pc, 0x154]                                                                                                   |     r3 = *(0x21478);
    0x00021322 ldr.w r7, [r8, r3]                                                                                                    |     r7 = *((r8 + r3));
    0x00021326 ldrb r3, [r7]                                                                                                         |     r3 = *(r7);
    0x00021328 cmp r3, 0                                                                                                             |     
                                                                                                                                     |     if (r3 == 0) {
    0x0002132a beq 0x213a8                                                                                                           |         goto label_4;
                                                                                                                                     |     }
    0x0002132c ldr r3, [r6, 4]                                                                                                       |     r3 = *((r6 + 4));
    0x0002132e subs r2, r3, 1                                                                                                        |     r2 = r3 - 1;
    0x00021330 str r2, [r6, 4]                                                                                                       |     *((r6 + 4)) = r2;
                                                                                                                                     | label_1:
    0x00021332 cmp r3, 1                                                                                                             |     
    0x00021334 beq 0x21388                                                                                                           |     
                                                                                                                                     |     while (r3 != 1) {
                                                                                                                                     | label_0:
    0x00021336 ldr r3, [sp, 0x68]                                                                                                    |         r3 = *(arg_0h);
    0x00021338 cmp r3, 2                                                                                                             |         
                                                                                                                                     |         if (r3 > 2) {
    0x0002133a bhi 0x21408                                                                                                           |             goto label_5;
                                                                                                                                     |         }
    0x0002133c ldr r3, [sp, 0x68]                                                                                                    |         r3 = *(arg_0h);
    0x0002133e cmp r5, sb                                                                                                            |         
    0x00021340 str r3, [r4, 0x10]                                                                                                    |         *((r4 + 0x10)) = r3;
    0x00021342 ldr r3, [sp, 4]                                                                                                       |         r3 = var_4h;
    0x00021344 str r3, [r4, 0x14]                                                                                                    |         *((r4 + 0x14)) = r3;
                                                                                                                                     |         if (r5 != sb) {
    0x00021346 beq 0x21360                                                                                                           |             
    0x00021348 mov r0, r5                                                                                                            |             r0 = r5;
    0x0002134a blx 0xedb4                                                                                                            |             fcn_0000edb4 ();
    0x0002134e add r6, sp, 8                                                                                                         |             r6 += var_8h;
    0x00021350 mov r1, sb                                                                                                            |             r1 = sb;
    0x00021352 mov r0, r6                                                                                                            |             r0 = r6;
    0x00021354 blx 0xeb24                                                                                                            |             r0 = fcn_0000eb24 ();
    0x00021358 ldm.w r6, {r0, r1, r2, r3}                                                                                            |             r0 = *(r6);
                                                                                                                                     |             r1 = *((r6 + 4));
                                                                                                                                     |             r2 = *((r6 + 8));
                                                                                                                                     |             r3 = *((r6 + 12));
    0x0002135c stm.w r5, {r0, r1, r2, r3}                                                                                            |             *(r5) = r0;
                                                                                                                                     |             *((r5 + 4)) = r1;
                                                                                                                                     |             *((r5 + 8)) = r2;
                                                                                                                                     |             *((r5 + 12)) = r3;
                                                                                                                                     |         }
    0x00021360 add.w r6, r4, 0x20                                                                                                    |         r6 = r4 + 0x20;
    0x00021364 ldm.w r5, {r0, r1, r2, r3}                                                                                            |         r0 = *(r5);
                                                                                                                                     |         r1 = *((r5 + 4));
                                                                                                                                     |         r2 = *((r5 + 8));
                                                                                                                                     |         r3 = *((r5 + 12));
    0x00021368 stm.w r6, {r0, r1, r2, r3}                                                                                            |         *(r6) = r0;
                                                                                                                                     |         *((r6 + 4)) = r1;
                                                                                                                                     |         *((r6 + 8)) = r2;
                                                                                                                                     |         *((r6 + 12)) = r3;
    0x0002136c ldr r2, [pc, 0x10c]                                                                                                   |         
    0x0002136e ldr r3, [pc, 0xf8]                                                                                                    |         r3 = *(0x2146a);
    0x00021370 add r2, pc                                                                                                            |         r2 = 0x427f0;
    0x00021372 ldr r3, [r2, r3]                                                                                                      |         r3 = *(0x427f0);
    0x00021374 ldr r2, [r3]                                                                                                          |         r2 = *(0x427f0);
    0x00021376 ldr r3, [sp, 0x3c]                                                                                                    |         r3 = var_3ch;
    0x00021378 eors r2, r3                                                                                                           |         r2 ^= r3;
    0x0002137a mov.w r3, 0                                                                                                           |         r3 = 0;
                                                                                                                                     |         if (r2 != r3) {
    0x0002137e bne 0x213de                                                                                                           |             goto label_6;
                                                                                                                                     |         }
    0x00021380 mov r0, r4                                                                                                            |         r0 = r4;
    0x00021382 add sp, 0x44                                                                                                          |         
    0x00021384 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                            |         
    0x00021388 ldr r3, [r6]                                                                                                          |         r3 = *(r6);
    0x0002138a mov r0, r6                                                                                                            |         r0 = r6;
    0x0002138c ldr r3, [r3, 8]                                                                                                       |         r3 = *((r3 + 8));
    0x0002138e blx r3                                                                                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00021390 ldrb r3, [r7]                                                                                                         |         r3 = *(r7);
                                                                                                                                     |         if (r3 == 0) {
    0x00021392 cbz r3, 0x213c2                                                                                                       |             goto label_7;
                                                                                                                                     |         }
    0x00021394 ldr r3, [r6, 8]                                                                                                       |         r3 = *((r6 + 8));
    0x00021396 subs r2, r3, 1                                                                                                        |         r2 = r3 - 1;
    0x00021398 str r2, [r6, 8]                                                                                                       |         *((r6 + 8)) = r2;
                                                                                                                                     | label_2:
    0x0002139a cmp r3, 1                                                                                                             |         
    0x0002139c bne 0x21336                                                                                                           |         
                                                                                                                                     |     }
    0x0002139e ldr r3, [r6]                                                                                                          |     r3 = *(r6);
    0x000213a0 mov r0, r6                                                                                                            |     r0 = r6;
    0x000213a2 ldr r3, [r3, 0xc]                                                                                                     |     r3 = *((r3 + 0xc));
    0x000213a4 blx r3                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000213a6 b 0x21336                                                                                                             |     goto label_0;
                                                                                                                                     | label_4:
    0x000213a8 adds r2, r6, 4                                                                                                        |     r2 = r6 + 4;
    0x000213aa dmb ish                                                                                                               |     __asm ("dmb ish");
                                                                                                                                     |     do {
    0x000213ae ldrex r3, [r2]                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000213b2 subs r1, r3, 1                                                                                                        |         r1 = r3 - 1;
    0x000213b4 strex r0, r1, [r2]                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x000213b8 cmp r0, 0                                                                                                             |         
    0x000213ba bne 0x213ae                                                                                                           |         
                                                                                                                                     |     } while (r0 != 0);
    0x000213bc dmb ish                                                                                                               |     __asm ("dmb ish");
    0x000213c0 b 0x21332                                                                                                             |     goto label_1;
                                                                                                                                     | label_7:
    0x000213c2 add.w r2, r6, 8                                                                                                       |     r2 = r6 + 8;
    0x000213c6 dmb ish                                                                                                               |     __asm ("dmb ish");
                                                                                                                                     |     do {
    0x000213ca ldrex r3, [r2]                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000213ce subs r1, r3, 1                                                                                                        |         r1 = r3 - 1;
    0x000213d0 strex r0, r1, [r2]                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x000213d4 cmp r0, 0                                                                                                             |         
    0x000213d6 bne 0x213ca                                                                                                           |         
                                                                                                                                     |     } while (r0 != 0);
    0x000213d8 dmb ish                                                                                                               |     __asm ("dmb ish");
    0x000213dc b 0x2139a                                                                                                             |     goto label_2;
                                                                                                                                     | label_6:
    0x000213de blx 0xea48                                                                                                            |     fcn_0000ea48 ();
                                                                                                                                     |     do {
                                                                                                                                     | label_3:
    0x000213e2 mov r0, r5                                                                                                            |         r0 = r5;
    0x000213e4 blx 0xedb4                                                                                                            |         fcn_0000edb4 ();
    0x000213e8 ldr r0, [r4, 0x3c]                                                                                                    |         r0 = *((r4 + 0x3c));
                                                                                                                                     |         if (r0 != 0) {
    0x000213ea cbz r0, 0x213f0                                                                                                       |             
    0x000213ec bl 0x18a84                                                                                                            |             fcn_00018a84 (r0);
                                                                                                                                     |         }
    0x000213f0 ldr r0, [r4, 0x34]                                                                                                    |         r0 = *((r4 + 0x34));
                                                                                                                                     |         if (r0 != 0) {
    0x000213f2 cbz r0, 0x213f8                                                                                                       |             
    0x000213f4 bl 0x18a84                                                                                                            |             r0 = fcn_00018a84 (r0);
                                                                                                                                     |         }
    0x000213f8 blx 0xea54                                                                                                            |         fcn_0000ea54 ();
    0x000213fc ldr r0, [sp, 0x20]                                                                                                    |         r0 = var_20h;
    0x000213fe cmp r0, 0                                                                                                             |         
    0x00021400 beq 0x213e2                                                                                                           |         
                                                                                                                                     |     } while (r0 == 0);
    0x00021402 bl 0x18a84                                                                                                            |     fcn_00018a84 (r0);
    0x00021406 b 0x213e2                                                                                                             |     goto label_3;
                                                                                                                                     | label_5:
    0x00021408 movs r0, 0x28                                                                                                         |     r0 = 0x28;
    0x0002140a add r7, sp, 0x24                                                                                                      |     r7 += var_24h;
    0x0002140c blx 0xe764                                                                                                            |     fcn_0000e764 ();
    0x00021410 ldr r1, [pc, 0x6c]                                                                                                    |     
    0x00021412 mov r6, r0                                                                                                            |     r6 = r0;
    0x00021414 mov r0, r7                                                                                                            |     r0 = r7;
    0x00021416 add r1, pc                                                                                                            |     r1 = 0x4289a;
    0x00021418 bl 0xeef8                                                                                                             |     entry0 (r0, r1);
    0x0002141c mov r2, r7                                                                                                            |     r2 = r7;
    0x0002141e mvn r1, 8                                                                                                             |     r1 = ~8;
    0x00021422 mov r0, r6                                                                                                            |     r0 = r6;
    0x00021424 bl 0x21618                                                                                                            |     fcn_00021618 (r0, r1, r2);
    0x00021428 ldr r0, [sp, 0x24]                                                                                                    |     r0 = var_24h;
    0x0002142a add r3, sp, 0x2c                                                                                                      |     r3 += var_2ch;
    0x0002142c cmp r0, r3                                                                                                            |     
                                                                                                                                     |     if (r0 != r3) {
    0x0002142e beq 0x21434                                                                                                           |         
    0x00021430 blx 0xe9a4                                                                                                            |         fcn_0000e9a4 ();
                                                                                                                                     |     }
    0x00021434 ldr r3, [pc, 0x4c]                                                                                                    |     r3 = *(0x21484);
    0x00021436 mov r0, r6                                                                                                            |     r0 = r6;
    0x00021438 ldr.w r2, [r8, r3]                                                                                                    |     r2 = *((r8 + r3));
    0x0002143c ldr r3, [pc, 0x48]                                                                                                    |     r3 = *(0x21488);
    0x0002143e ldr.w r1, [r8, r3]                                                                                                    |     r1 = *((r8 + r3));
    0x00021442 blx 0xed0c                                                                                                            |     fcn_0000ed0c ();
    0x00021446 mov r0, r7                                                                                                            |     r0 = r7;
    0x00021448 blx 0xe9a4                                                                                                            |     fcn_0000e9a4 ();
    0x0002144c b 0x213e2                                                                                                             |     goto label_3;
                                                                                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x20980 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) method.mqtt::message.message_mqtt::message_const_ ()     | void method_mqtt::message_message_mqtt::message_const_ (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     /* mqtt::message::message(mqtt::message const&) */
    0x00020980 ldr r2, [pc, 0x174]                                   |     
    0x00020982 mov ip, r0                                            |     
    0x00020984 ldr r3, [pc, 0x174]                                   |     r3 = *(0x20afc);
    0x00020986 push {r4, r5, r6, r7, lr}                             |     
    0x00020988 mov lr, r1                                            |     lr = r1;
    0x0002098a add r2, pc                                            |     r2 = 0x41486;
    0x0002098c sub sp, 0x14                                          |     
    0x0002098e mov r5, r1                                            |     r5 = r1;
    0x00020990 mov r4, r0                                            |     r4 = r0;
    0x00020992 ldr r3, [r2, r3]                                      |     
    0x00020994 ldr r7, [pc, 0x168]                                   |     
    0x00020996 ldr r3, [r3]                                          |     r3 = *(0x41486);
    0x00020998 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0002099a mov.w r3, 0                                           |     r3 = 0;
    0x0002099e ldm.w lr!, {r0, r1, r2, r3}                           |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x000209a2 add r7, pc                                            |     r7 = 0x414a6;
    0x000209a4 stm.w ip!, {r0, r1, r2, r3}                           |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x000209a8 ldm.w lr!, {r0, r1, r2, r3}                           |     r0 = *(lr!);
                                                                     |     r1 = *((lr! + 4));
                                                                     |     r2 = *((lr! + 8));
                                                                     |     r3 = *((lr! + 12));
    0x000209ac stm.w ip!, {r0, r1, r2, r3}                           |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
                                                                     |     *((ip! + 8)) = r2;
                                                                     |     *((ip! + 12)) = r3;
    0x000209b0 ldm.w lr, {r0, r1, r2, r3}                            |     r0 = *(lr);
                                                                     |     r1 = *((lr + 4));
                                                                     |     r2 = *((lr + 8));
                                                                     |     r3 = *((lr + 12));
    0x000209b4 stm.w ip, {r0, r1, r2, r3}                            |     *(ip) = r0;
                                                                     |     *((ip + 4)) = r1;
                                                                     |     *((ip + 8)) = r2;
                                                                     |     *((ip + 12)) = r3;
    0x000209b8 ldrd r2, r3, [r5, 0x30]                               |     __asm ("ldrd r2, r3, [r5, 0x30]");
    0x000209bc strd r2, r3, [r4, 0x30]                               |     __asm ("strd r2, r3, [r4, 0x30]");
                                                                     |     if (r3 != 0) {
    0x000209c0 cbz r3, 0x209d2                                       |         
    0x000209c2 ldr r2, [pc, 0x140]                                   |         r2 = *(0x20b06);
    0x000209c4 ldr r2, [r7, r2]                                      |         r2 = *((r7 + r2));
    0x000209c6 ldrb r2, [r2]                                         |         r2 = *(r2);
    0x000209c8 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x000209ca beq 0x20a7e                                           |             goto label_6;
                                                                     |         }
    0x000209cc ldr r2, [r3, 4]                                       |         r2 = *((r3 + 4));
    0x000209ce adds r2, 1                                            |         r2++;
    0x000209d0 str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
                                                                     |     }
                                                                     | label_2:
    0x000209d2 movs r3, 0                                            |     r3 = 0;
    0x000209d4 add.w r6, r4, 0x40                                    |     r6 = r4 + 0x40;
    0x000209d8 add.w r1, r5, 0x40                                    |     r1 = r5 + 0x40;
    0x000209dc mov r0, r6                                            |     r0 = r6;
    0x000209de strd r3, r3, [r4, 0x38]                               |     __asm ("strd r3, r3, [r4, 0x38]");
    0x000209e2 blx 0xeb24                                            |     fcn_0000eb24 ();
    0x000209e6 ldrd r2, r3, [r5, 0x38]                               |     __asm ("ldrd r2, r3, [r5, 0x38]");
    0x000209ea strd r2, r3, [sp, 4]                                  |     __asm ("strd r2, r3, [var_4h]");
                                                                     |     if (r3 != 0) {
    0x000209ee cbz r3, 0x20a00                                       |         
    0x000209f0 ldr r2, [pc, 0x110]                                   |         r2 = *(0x20b04);
    0x000209f2 ldr r2, [r7, r2]                                      |         r2 = *((r7 + r2));
    0x000209f4 ldrb r2, [r2]                                         |         r2 = *(r2);
    0x000209f6 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x000209f8 beq 0x20a98                                           |             goto label_7;
                                                                     |         }
    0x000209fa ldr r2, [r3, 4]                                       |         r2 = *((r3 + 4));
    0x000209fc adds r2, 1                                            |         r2++;
    0x000209fe str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
                                                                     |     }
                                                                     | label_3:
    0x00020a00 add r1, sp, 4                                         |     r1 += var_4h;
    0x00020a02 mov r0, r4                                            |     r0 = r4;
    0x00020a04 blx 0xedd8                                            |     fcn_0000edd8 ();
    0x00020a08 ldr r5, [sp, 8]                                       |     r5 = var_8h;
                                                                     |     if (r5 == 0) {
    0x00020a0a cbz r5, 0x20a1e                                       |         goto label_0;
                                                                     |     }
    0x00020a0c ldr r3, [pc, 0xf4]                                    |     r3 = *(0x20b04);
    0x00020a0e ldr r7, [r7, r3]                                      |     r7 = *((r7 + r3));
    0x00020a10 ldrb r3, [r7]                                         |     r3 = *(r7);
                                                                     |     if (r3 == 0) {
    0x00020a12 cbz r3, 0x20a64                                       |         goto label_8;
                                                                     |     }
    0x00020a14 ldr r3, [r5, 4]                                       |     r3 = *((r5 + 4));
    0x00020a16 subs r2, r3, 1                                        |     r2 = r3 - 1;
    0x00020a18 str r2, [r5, 4]                                       |     *((r5 + 4)) = r2;
                                                                     | label_1:
    0x00020a1a cmp r3, 1                                             |     
    0x00020a1c beq 0x20a44                                           |     
                                                                     |     while (r3 != 1) {
                                                                     | label_0:
    0x00020a1e ldm.w r6, {r0, r1, r2, r3}                            |         r0 = *(r6);
                                                                     |         r1 = *((r6 + 4));
                                                                     |         r2 = *((r6 + 8));
                                                                     |         r3 = *((r6 + 12));
    0x00020a22 add.w r5, r4, 0x20                                    |         r5 = r4 + 0x20;
    0x00020a26 stm.w r5, {r0, r1, r2, r3}                            |         *(r5) = r0;
                                                                     |         *((r5 + 4)) = r1;
                                                                     |         *((r5 + 8)) = r2;
                                                                     |         *((r5 + 12)) = r3;
    0x00020a2a ldr r2, [pc, 0xdc]                                    |         
    0x00020a2c ldr r3, [pc, 0xcc]                                    |         r3 = *(0x20afc);
    0x00020a2e add r2, pc                                            |         r2 = 0x4153c;
    0x00020a30 ldr r3, [r2, r3]                                      |         r3 = *(0x4153c);
    0x00020a32 ldr r2, [r3]                                          |         r2 = *(0x4153c);
    0x00020a34 ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x00020a36 eors r2, r3                                           |         r2 ^= r3;
    0x00020a38 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x00020a3c bne 0x20ace                                           |             goto label_9;
                                                                     |         }
    0x00020a3e mov r0, r4                                            |         r0 = r4;
    0x00020a40 add sp, 0x14                                          |         
    0x00020a42 pop {r4, r5, r6, r7, pc}                              |         
    0x00020a44 ldr r3, [r5]                                          |         r3 = *(r5);
    0x00020a46 mov r0, r5                                            |         r0 = r5;
    0x00020a48 ldr r3, [r3, 8]                                       |         r3 = *((r3 + 8));
    0x00020a4a blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00020a4c ldrb r3, [r7]                                         |         r3 = *(r7);
                                                                     |         if (r3 == 0) {
    0x00020a4e cbz r3, 0x20ab2                                       |             goto label_10;
                                                                     |         }
    0x00020a50 ldr r3, [r5, 8]                                       |         r3 = *((r5 + 8));
    0x00020a52 subs r2, r3, 1                                        |         r2 = r3 - 1;
    0x00020a54 str r2, [r5, 8]                                       |         *((r5 + 8)) = r2;
                                                                     | label_4:
    0x00020a56 cmp r3, 1                                             |         
    0x00020a58 bne 0x20a1e                                           |         
                                                                     |     }
    0x00020a5a ldr r3, [r5]                                          |     r3 = *(r5);
    0x00020a5c mov r0, r5                                            |     r0 = r5;
    0x00020a5e ldr r3, [r3, 0xc]                                     |     r3 = *((r3 + 0xc));
    0x00020a60 blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00020a62 b 0x20a1e                                             |     goto label_0;
                                                                     | label_8:
    0x00020a64 adds r2, r5, 4                                        |     r2 = r5 + 4;
    0x00020a66 dmb ish                                               |     __asm ("dmb ish");
                                                                     |     do {
    0x00020a6a ldrex r3, [r2]                                        |         __asm ("ldrex r3, [r2]");
    0x00020a6e subs r1, r3, 1                                        |         r1 = r3 - 1;
    0x00020a70 strex r0, r1, [r2]                                    |         __asm ("strex r0, r1, [r2]");
    0x00020a74 cmp r0, 0                                             |         
    0x00020a76 bne 0x20a6a                                           |         
                                                                     |     } while (r0 != 0);
    0x00020a78 dmb ish                                               |     __asm ("dmb ish");
    0x00020a7c b 0x20a1a                                             |     goto label_1;
                                                                     | label_6:
    0x00020a7e adds r3, 4                                            |     r3 += 4;
    0x00020a80 dmb ish                                               |     __asm ("dmb ish");
                                                                     |     do {
    0x00020a84 ldrex r1, [r3]                                        |         __asm ("ldrex r1, [r3]");
    0x00020a88 adds r1, 1                                            |         r1++;
    0x00020a8a strex r2, r1, [r3]                                    |         __asm ("strex r2, r1, [r3]");
    0x00020a8e cmp r2, 0                                             |         
    0x00020a90 bne 0x20a84                                           |         
                                                                     |     } while (r2 != 0);
    0x00020a92 dmb ish                                               |     __asm ("dmb ish");
    0x00020a96 b 0x209d2                                             |     goto label_2;
                                                                     | label_7:
    0x00020a98 adds r3, 4                                            |     r3 += 4;
    0x00020a9a dmb ish                                               |     __asm ("dmb ish");
                                                                     |     do {
    0x00020a9e ldrex r1, [r3]                                        |         __asm ("ldrex r1, [r3]");
    0x00020aa2 adds r1, 1                                            |         r1++;
    0x00020aa4 strex r2, r1, [r3]                                    |         __asm ("strex r2, r1, [r3]");
    0x00020aa8 cmp r2, 0                                             |         
    0x00020aaa bne 0x20a9e                                           |         
                                                                     |     } while (r2 != 0);
    0x00020aac dmb ish                                               |     __asm ("dmb ish");
    0x00020ab0 b 0x20a00                                             |     goto label_3;
                                                                     | label_10:
    0x00020ab2 add.w r2, r5, 8                                       |     r2 = r5 + 8;
    0x00020ab6 dmb ish                                               |     __asm ("dmb ish");
                                                                     |     do {
    0x00020aba ldrex r3, [r2]                                        |         __asm ("ldrex r3, [r2]");
    0x00020abe subs r1, r3, 1                                        |         r1 = r3 - 1;
    0x00020ac0 strex r0, r1, [r2]                                    |         __asm ("strex r0, r1, [r2]");
    0x00020ac4 cmp r0, 0                                             |         
    0x00020ac6 bne 0x20aba                                           |         
                                                                     |     } while (r0 != 0);
    0x00020ac8 dmb ish                                               |     __asm ("dmb ish");
    0x00020acc b 0x20a56                                             |     goto label_4;
                                                                     | label_9:
    0x00020ace blx 0xea48                                            |     fcn_0000ea48 ();
    0x00020ad2 ldr r0, [sp, 8]                                       |     r0 = var_8h;
                                                                     |     if (r0 != 0) {
    0x00020ad4 cbnz r0, 0x20af2                                      |         goto label_11;
                                                                     |     }
                                                                     | label_5:
    0x00020ad6 mov r0, r6                                            |     r0 = r6;
    0x00020ad8 blx 0xedb4                                            |     fcn_0000edb4 ();
                                                                     |     do {
    0x00020adc ldr r0, [r4, 0x3c]                                    |         r0 = *((r4 + 0x3c));
                                                                     |         if (r0 != 0) {
    0x00020ade cbz r0, 0x20ae4                                       |             
    0x00020ae0 bl 0x18a84                                            |             fcn_00018a84 (r0);
                                                                     |         }
    0x00020ae4 ldr r0, [r4, 0x34]                                    |         r0 = *((r4 + 0x34));
                                                                     |         if (r0 != 0) {
    0x00020ae6 cbz r0, 0x20aec                                       |             
    0x00020ae8 bl 0x18a84                                            |             r0 = fcn_00018a84 (r0);
                                                                     |         }
    0x00020aec blx 0xea54                                            |         fcn_0000ea54 ();
    0x00020af0 b 0x20adc                                             |         
                                                                     |     } while (1);
                                                                     | label_11:
    0x00020af2 bl 0x18a84                                            |     fcn_00018a84 (r0);
    0x00020af6 b 0x20ad6                                             |     goto label_5;
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x23e30 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) method.mqtt::name_value_collection.update_c_arr__ ()     | void method_mqtt::name_value_collection_update_c_arr_ (int16_t arg_b0h, int16_t arg_3d8h, int16_t arg1) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch_2;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_4h_2;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     r0 = arg1;
                                                                     |     /* mqtt::name_value_collection::update_c_arr() */
    0x00023e30 ldr r2, [pc, 0x110]                                   |     
    0x00023e32 ldr r3, [pc, 0x114]                                   |     r3 = *(0x23f4a);
    0x00023e34 push.w {r4, r5, r6, r7, r8, sb, sl, lr}               |     
    0x00023e38 sub sp, 0x10                                          |     
    0x00023e3a add r2, pc                                            |     r2 = 0x47d82;
    0x00023e3c mov r6, r0                                            |     r6 = r0;
    0x00023e3e add.w sl, r0, 0x18                                    |     sl = r0 + 0x18;
    0x00023e42 ldr r3, [r2, r3]                                      |     
    0x00023e44 ldr r3, [r3]                                          |     r3 = *(0x47d82);
    0x00023e46 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x00023e48 mov.w r3, 0                                           |     r3 = 0;
    0x00023e4c ldrd r7, r3, [r0, 0x18]                               |     __asm ("ldrd r7, r3, [r0, 0x18]");
    0x00023e50 cmp r3, r7                                            |     
    0x00023e52 it ne                                                 |     
                                                                     |     if (r3 == r7) {
    0x00023e54 strne r7, [r0, 0x1c]                                  |         *((r0 + 0x1c)) = r7;
                                                                     |     }
    0x00023e56 ldr r0, [r0, 0x14]                                    |     r0 = *((r0 + 0x14));
    0x00023e58 adds r4, r0, 1                                        |     r4 = r0 + 1;
    0x00023e5a cmp.w r4, 0x10000000                                  |     
                                                                     |     if (r4 >= 0x10000000) {
    0x00023e5e bhs 0x23f3a                                           |         goto label_2;
                                                                     |     }
    0x00023e60 ldrd r5, r8, [r6, 0x1c]                               |     __asm ("ldrd r5, r8, [r6, 0x1c]");
    0x00023e64 sub.w r3, r8, r7                                      |     r3 = r8 - r7;
    0x00023e68 cmp.w r4, r3, asr 3                                   |     
                                                                     |     if (r4 >= r3) {
    0x00023e6c bls 0x23e9a                                           |         
    0x00023e6e subs r5, r5, r7                                       |         r5 -= r7;
    0x00023e70 lsl.w r8, r4, 3                                       |         r8 = r4 << 3;
    0x00023e74 mov r2, r5                                            |         r2 = r5;
                                                                     |         if (r4 != 0) {
    0x00023e76 cbz r4, 0x23e86                                       |             
    0x00023e78 mov r0, r8                                            |             r0 = r8;
    0x00023e7a blx 0xe5ec                                            |             fcn_0000e5ec ();
    0x00023e7e ldrd r7, r2, [r6, 0x18]                               |             __asm ("ldrd r7, r2, [r6, 0x18]");
    0x00023e82 mov r4, r0                                            |             r4 = r0;
    0x00023e84 subs r2, r2, r7                                       |             r2 -= r7;
                                                                     |         }
    0x00023e86 cmp r2, 0                                             |         
                                                                     |         if (r2 > 0) {
    0x00023e88 bgt 0x23f1a                                           |             goto label_3;
                                                                     |         }
    0x00023e8a cmp r7, 0                                             |         
                                                                     |         if (r7 != 0) {
    0x00023e8c bne 0x23f22                                           |             goto label_4;
                                                                     |         }
                                                                     | label_1:
    0x00023e8e add r5, r4                                            |         r5 += r4;
    0x00023e90 add r8, r4                                            |         r8 += r4;
    0x00023e92 strd r4, r5, [r6, 0x18]                               |         __asm ("strd r4, r5, [r6, 0x18]");
    0x00023e96 str.w r8, [r6, 0x20]                                  |         __asm ("str.w r8, [r6, 0x20]");
                                                                     |     }
    0x00023e9a ldr r4, [r6, 0xc]                                     |     r4 = *((r6 + 0xc));
    0x00023e9c add.w sb, r6, 4                                       |     sb = r6 + 4;
    0x00023ea0 add r7, sp, 4                                         |     r7 += var_4h_2;
    0x00023ea2 cmp sb, r4                                            |     
                                                                     |     if (sb != r4) {
    0x00023ea4 bne 0x23ec0                                           |         goto label_0;
                                                                     |     }
    0x00023ea6 b 0x23ee6                                             |     goto label_5;
                                                                     |     do {
    0x00023ea8 ldm.w r7, {r0, r1}                                    |         r0 = *(r7);
                                                                     |         r1 = *((r7 + 4));
    0x00023eac stm.w r5, {r0, r1}                                    |         *(r5) = r0;
                                                                     |         *((r5 + 4)) = r1;
    0x00023eb0 adds r5, 8                                            |         r5 += 8;
    0x00023eb2 mov r0, r4                                            |         r0 = r4;
    0x00023eb4 str r5, [r6, 0x1c]                                    |         *((r6 + 0x1c)) = r5;
    0x00023eb6 blx 0xe860                                            |         r0 = fcn_0000e860 ();
    0x00023eba cmp sb, r0                                            |         
    0x00023ebc mov r4, r0                                            |         r4 = r0;
                                                                     |         if (sb == r0) {
    0x00023ebe beq 0x23ee6                                           |             goto label_5;
                                                                     |         }
                                                                     | label_0:
    0x00023ec0 ldr r3, [r4, 0x10]                                    |         r3 = *((r4 + 0x10));
    0x00023ec2 cmp r5, r8                                            |         
    0x00023ec4 str r3, [sp, 4]                                       |         var_4h_2 = r3;
    0x00023ec6 ldr r3, [r4, 0x28]                                    |         r3 = *((r4 + 0x28));
    0x00023ec8 str r3, [sp, 8]                                       |         var_8h = r3;
    0x00023eca bne 0x23ea8                                           |         
                                                                     |     } while (r5 != r8);
    0x00023ecc mov r1, r5                                            |     r1 = r5;
    0x00023ece mov r2, r7                                            |     r2 = r7;
    0x00023ed0 mov r0, sl                                            |     r0 = sl;
    0x00023ed2 blx 0xe734                                            |     fcn_0000e734 ();
    0x00023ed6 mov r0, r4                                            |     r0 = r4;
    0x00023ed8 ldrd r5, r8, [r6, 0x1c]                               |     __asm ("ldrd r5, r8, [r6, 0x1c]");
    0x00023edc blx 0xe860                                            |     r0 = fcn_0000e860 ();
    0x00023ee0 cmp sb, r0                                            |     
    0x00023ee2 mov r4, r0                                            |     r4 = r0;
                                                                     |     if (sb != r0) {
    0x00023ee4 bne 0x23ec0                                           |         goto label_0;
                                                                     |     }
                                                                     | label_5:
    0x00023ee6 cmp r5, r8                                            |     
    0x00023ee8 mov.w r3, 0                                           |     r3 = 0;
    0x00023eec strd r3, r3, [sp, 4]                                  |     __asm ("strd r3, r3, [var_4h_2]");
                                                                     |     if (r5 == r8) {
    0x00023ef0 beq 0x23f2a                                           |         goto label_6;
                                                                     |     }
    0x00023ef2 ldm.w r7, {r0, r1}                                    |     r0 = *(r7);
                                                                     |     r1 = *((r7 + 4));
    0x00023ef6 add.w r3, r5, 8                                       |     r3 = r5 + 8;
    0x00023efa stm.w r5, {r0, r1}                                    |     *(r5) = r0;
                                                                     |     *((r5 + 4)) = r1;
    0x00023efe str r3, [r6, 0x1c]                                    |     *((r6 + 0x1c)) = r3;
                                                                     |     do {
    0x00023f00 ldr r2, [pc, 0x48]                                    |         
    0x00023f02 ldr r3, [pc, 0x44]                                    |         r3 = *(0x23f4a);
    0x00023f04 add r2, pc                                            |         r2 = 0x47e54;
    0x00023f06 ldr r3, [r2, r3]                                      |         r3 = *(0x47e54);
    0x00023f08 ldr r2, [r3]                                          |         r2 = *(0x47e54);
    0x00023f0a ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x00023f0c eors r2, r3                                           |         r2 ^= r3;
    0x00023f0e mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x00023f12 bne 0x23f36                                           |             goto label_7;
                                                                     |         }
    0x00023f14 add sp, 0x10                                          |         
    0x00023f16 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}                |         
                                                                     | label_3:
    0x00023f1a mov r1, r7                                            |         r1 = r7;
    0x00023f1c mov r0, r4                                            |         r0 = r4;
    0x00023f1e blx 0xe930                                            |         sym ();
                                                                     | label_4:
    0x00023f22 mov r0, r7                                            |         r0 = r7;
    0x00023f24 blx 0xe9a4                                            |         fcn_0000e9a4 ();
    0x00023f28 b 0x23e8e                                             |         goto label_1;
                                                                     | label_6:
    0x00023f2a mov r2, r7                                            |         r2 = r7;
    0x00023f2c mov r1, r5                                            |         r1 = r5;
    0x00023f2e mov r0, sl                                            |         r0 = sl;
    0x00023f30 blx 0xe734                                            |         fcn_0000e734 ();
    0x00023f34 b 0x23f00                                             |         
                                                                     |     } while (1);
                                                                     | label_7:
    0x00023f36 blx 0xea48                                            |     fcn_0000ea48 ();
                                                                     | label_2:
    0x00023f3a ldr r0, [pc, 0x14]                                    |     
    0x00023f3c add r0, pc                                            |     r0 = 0x47e92;
    0x00023f3e blx 0xe7ac                                            |     fcn_0000e7ac ();
    0x00023f42 nop                                                   |     
    0x00023f44 ldr r4, [sp, 0x3d8]                                   |     r4 = *(arg_3d8h);
    0x00023f46 movs r1, r0                                           |     r1 = r0;
    0x00023f48 lsls r0, r6, 0xc                                      |     r0 = r6 << 0xc;
    0x00023f4a movs r0, r0                                           |     
    0x00023f4c ldr r4, [sp, 0xb0]                                    |     r4 = *(arg_b0h);
    0x00023f4e movs r1, r0                                           |     r1 = r0;
    0x00023f50 ldrh r0, [r0, r5]                                     |     r0 = *((r0 + r5));
    0x00023f52 movs r0, r0                                           |     
                                                                     | }
    ; assembly                                                                               | /* r2dec pseudo code output */
                                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x218e4 */
                                                                                             | #include <stdint.h>
                                                                                             |  
    ; (fcn) method.mqtt::properties.properties_std::initializer_list_mqtt::property__ ()     | void method_mqtt::properties_properties_std::initializer_list_mqtt::property_ (int16_t arg1, uint32_t arg2, int16_t arg3) {
                                                                                             |     int16_t var_8h;
                                                                                             |     r0 = arg1;
                                                                                             |     r1 = arg2;
                                                                                             |     r2 = arg3;
                                                                                             |     /* mqtt::properties::properties(std::initializer_list<qtt::property>) */
    0x000218e4 bl 0xceeac                                                                    |     r0 = void (*0xceeac)() ();
    0x000218e8 lsls r2, r0, 0x1a                                                             |     r2 = r0 << 0x1a;
    0x000218ea sub sp, 8                                                                     |     
    0x000218ec add.w r6, r1, r6, lsl 2                                                       |     r6 = r1 + (r6 << 2);
    0x000218f0 add r3, sp, 8                                                                 |     r3 += var_8h;
    0x000218f2 stmdb r3, {r1, r2}                                                            |     __asm ("stmdb r3, {r1, r2}");
    0x000218f6 movs r3, 0                                                                    |     r3 = 0;
    0x000218f8 cmp r1, r6                                                                    |     
    0x000218fa mov r5, r0                                                                    |     r5 = r0;
    0x000218fc str r3, [r0]                                                                  |     *(r0) = r3;
    0x000218fe str r3, [r0, 4]                                                               |     *((r0 + 4)) = r3;
    0x00021900 str r3, [r0, 8]                                                               |     *((r0 + 8)) = r3;
    0x00021902 str r3, [r0, 0xc]                                                             |     *((r0 + 0xc)) = r3;
                                                                                             |     if (r1 == r6) {
    0x00021904 beq 0x21916                                                                   |         goto label_0;
                                                                                             |     }
    0x00021906 mov r4, r1                                                                    |     r4 = r1;
                                                                                             |     do {
    0x00021908 mov r1, r4                                                                    |         r1 = r4;
    0x0002190a mov r0, r5                                                                    |         r0 = r5;
    0x0002190c adds r4, 0x14                                                                 |         r4 += 0x14;
    0x0002190e blx 0xe8e8                                                                    |         fcn_0000e8e8 ();
    0x00021912 cmp r6, r4                                                                    |         
    0x00021914 bne 0x21908                                                                   |         
                                                                                             |     } while (r6 != r4);
                                                                                             | label_0:
    0x00021916 mov r0, r5                                                                    |     r0 = r5;
    0x00021918 add sp, 8                                                                     |     
    0x0002191a pop {r4, r5, r6, pc}                                                          |     
                                                                                             | }
    ; assembly                                                                                       | /* r2dec pseudo code output */
                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x21ae8 */
                                                                                                     | #include <stdint.h>
                                                                                                     |  
    ; (fcn) method.mqtt::response_options.set_token_std::shared_ptr_mqtt::token__const_ ()           | void method_mqtt::response_options_set_token_std::shared_ptr_mqtt::token_const_ (int16_t arg1, int16_t arg2) {
                                                                                                     |     r0 = arg1;
                                                                                                     |     r1 = arg2;
                                                                                                     |     /* mqtt::response_options::set_token(std::shared_ptr<qtt::token> const&) */
    0x00021ae8 push {r4, r5, r6, lr}                                                                 |     
    0x00021aea mov r5, r1                                                                            |     r5 = r1;
    0x00021aec ldrd r3, r6, [r1]                                                                     |     __asm ("ldrd r3, r6, [r1]");
    0x00021af0 mov r4, r0                                                                            |     r4 = r0;
    0x00021af2 ldr r2, [pc, 0x80]                                                                    |     
    0x00021af4 str r3, [r0, 0x44]                                                                    |     *((r0 + 0x44)) = r3;
    0x00021af6 add r2, pc                                                                            |     r2 = 0x43670;
                                                                                                     |     if (r6 == 0) {
    0x00021af8 cbz r6, 0x21b3a                                                                       |         goto label_2;
                                                                                                     |     }
    0x00021afa ldr r1, [pc, 0x7c]                                                                    |     r1 = *(0x21b7a);
    0x00021afc ldr r1, [r2, r1]                                                                      |     r1 = *((r2 + r1));
    0x00021afe ldrb r1, [r1]                                                                         |     r1 = *(r1);
                                                                                                     |     if (r1 != 0) {
    0x00021b00 cbz r1, 0x21b20                                                                       |         
    0x00021b02 ldr r2, [r6, 8]                                                                       |         r2 = *((r6 + 8));
    0x00021b04 ldr r0, [r0, 0x48]                                                                    |         r0 = *((r0 + 0x48));
    0x00021b06 adds r2, 1                                                                            |         r2++;
    0x00021b08 str r2, [r6, 8]                                                                       |         *((r6 + 8)) = r2;
                                                                                                     |         if (r0 != 0) {
    0x00021b0a cbz r0, 0x21b1a                                                                       |             
                                                                                                     | label_1:
    0x00021b0c ldr r3, [r0, 8]                                                                       |             r3 = *((r0 + 8));
    0x00021b0e cmp r3, 1                                                                             |             
    0x00021b10 add.w r2, r3, -1                                                                      |             r2 = r3 + -1;
    0x00021b14 str r2, [r0, 8]                                                                       |             *((r0 + 8)) = r2;
                                                                                                     |             if (r3 == 1) {
    0x00021b16 beq 0x21b6a                                                                           |                 goto label_3;
                                                                                                     |             }
                                                                                                     | label_0:
    0x00021b18 ldr r3, [r5]                                                                          |             r3 = *(r5);
                                                                                                     |         }
    0x00021b1a str r6, [r4, 0x48]                                                                    |         *((r4 + 0x48)) = r6;
    0x00021b1c str r3, [r4, 0x10]                                                                    |         *((r4 + 0x10)) = r3;
    0x00021b1e pop {r4, r5, r6, pc}                                                                  |         
                                                                                                     |     }
    0x00021b20 add.w r3, r6, 8                                                                       |     r3 = r6 + 8;
    0x00021b24 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00021b28 ldrex r0, [r3]                                                                        |         __asm ("ldrex r0, [r3]");
    0x00021b2c adds r0, 1                                                                            |         r0++;
    0x00021b2e strex r1, r0, [r3]                                                                    |         __asm ("strex r1, r0, [r3]");
    0x00021b32 cmp r1, 0                                                                             |         
    0x00021b34 bne 0x21b28                                                                           |         
                                                                                                     |     } while (r1 != 0);
    0x00021b36 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     | label_2:
    0x00021b3a ldr r0, [r4, 0x48]                                                                    |     r0 = *((r4 + 0x48));
    0x00021b3c cmp r0, 0                                                                             |     
                                                                                                     |     if (r0 == 0) {
    0x00021b3e beq 0x21b18                                                                           |         goto label_0;
                                                                                                     |     }
    0x00021b40 ldr r3, [pc, 0x34]                                                                    |     r3 = *(0x21b78);
    0x00021b42 ldr r3, [r2, r3]                                                                      |     r3 = *((r2 + r3));
    0x00021b44 ldrb r3, [r3]                                                                         |     r3 = *(r3);
    0x00021b46 cmp r3, 0                                                                             |     
                                                                                                     |     if (r3 != 0) {
    0x00021b48 bne 0x21b0c                                                                           |         goto label_1;
                                                                                                     |     }
    0x00021b4a add.w r2, r0, 8                                                                       |     r2 = r0 + 8;
    0x00021b4e dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     do {
    0x00021b52 ldrex r3, [r2]                                                                        |         __asm ("ldrex r3, [r2]");
    0x00021b56 subs r1, r3, 1                                                                        |         r1 = r3 - 1;
    0x00021b58 strex ip, r1, [r2]                                                                    |         __asm ("strex ip, r1, [r2]");
    0x00021b5c cmp.w ip, 0                                                                           |         
    0x00021b60 bne 0x21b52                                                                           |         
                                                                                                     |     } while (ip != 0);
    0x00021b62 cmp r3, 1                                                                             |     
    0x00021b64 dmb ish                                                                               |     __asm ("dmb ish");
                                                                                                     |     if (r3 != 1) {
    0x00021b68 bne 0x21b18                                                                           |         goto label_0;
                                                                                                     |     }
                                                                                                     | label_3:
    0x00021b6a ldr r3, [r0]                                                                          |     r3 = *(r0);
    0x00021b6c ldr r3, [r3, 0xc]                                                                     |     r3 = *((r3 + 0xc));
    0x00021b6e blx r3                                                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x00021b70 b 0x21b18                                                                             |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x24328 */
                                                                                             | #include <stdint.h>
                                                                                             |  
    ; (fcn) method.mqtt::string_collection.operator_mqtt::string_collection_const_ ()        | void method_mqtt::string_collection_operator_mqtt::string_collection_const_ (int16_t arg_188h, int16_t arg_3f0h, uint32_t arg1, int16_t arg2) {
                                                                                             |     int16_t var_4h_3;
                                                                                             |     int16_t var_8h_2;
                                                                                             |     int16_t var_ch;
                                                                                             |     int16_t var_10h;
                                                                                             |     int16_t var_14h;
                                                                                             |     r0 = arg1;
                                                                                             |     r1 = arg2;
                                                                                             |     /* mqtt::string_collection::operator=(mqtt::string_collection const&) */
    0x00024328 ldr r2, [pc, 0x2c8]                                                           |     
    0x0002432a cmp r0, r1                                                                    |     
    0x0002432c ldr r3, [pc, 0x2c8]                                                           |     r3 = *(0x245f8);
    0x0002432e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                   |     
    0x00024332 sub sp, 0x1c                                                                  |     
    0x00024334 add r2, pc                                                                    |     r2 = 0x4892c;
    0x00024336 mov r7, r0                                                                    |     r7 = r0;
    0x00024338 ldr r3, [r2, r3]                                                              |     
    0x0002433a ldr r3, [r3]                                                                  |     r3 = *(0x4892c);
    0x0002433c str r3, [sp, 0x14]                                                            |     var_14h = r3;
    0x0002433e mov.w r3, 0                                                                   |     r3 = 0;
                                                                                             |     if (r0 == r1) {
    0x00024342 beq 0x243c4                                                                   |         goto label_6;
                                                                                             |     }
    0x00024344 ldrd r4, sb, [r1]                                                             |     __asm ("ldrd r4, sb, [r1]");
    0x00024348 mov r8, r1                                                                    |     r8 = r1;
    0x0002434a ldr r5, [r0]                                                                  |     r5 = *(r0);
    0x0002434c ldr r3, [r0, 8]                                                               |     r3 = *((r0 + 8));
    0x0002434e sub.w r2, sb, r4                                                              |     r2 = sb - r4;
    0x00024352 str r2, [sp, 4]                                                               |     var_4h_3 = r2;
    0x00024354 subs r3, r3, r5                                                               |     r3 -= r5;
    0x00024356 cmp r3, r2                                                                    |     
                                                                                             |     if (r3 <= r2) {
    0x00024358 blo 0x243e8                                                                   |         goto label_7;
                                                                                             |     }
    0x0002435a ldr.w sl, [r0, 4]                                                             |     sl = *((r0 + 4));
    0x0002435e ldr r2, [sp, 4]                                                               |     r2 = var_4h_3;
    0x00024360 sub.w r3, sl, r5                                                              |     r3 = sl - r5;
    0x00024364 cmp r2, r3                                                                    |     
                                                                                             |     if (r2 > r3) {
    0x00024366 bhi.w 0x2446e                                                                 |         goto label_8;
                                                                                             |     }
    0x0002436a cmp r2, 0                                                                     |     
                                                                                             |     if (r2 <= 0) {
    0x0002436c ble 0x2439e                                                                   |         goto label_9;
                                                                                             |     }
    0x0002436e asrs r6, r2, 3                                                                |     r6 = r2 >> 3;
    0x00024370 movw r3, 0xaaab                                                               |     
                                                                                             |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00024374 movt r3, 0xaaaa                                                               |     r3 = 0xaaaaaaab;
    0x00024378 mul r6, r3, r6                                                                |     r6 = r3 * r6;
    0x0002437c mov r8, r5                                                                    |     r8 = r5;
                                                                                             |     do {
    0x0002437e mov r1, r4                                                                    |         r1 = r4;
    0x00024380 mov r0, r8                                                                    |         r0 = r8;
    0x00024382 adds r4, 0x18                                                                 |         r4 += 0x18;
    0x00024384 blx 0xe7b8                                                                    |         fcn_0000e7b8 ();
    0x00024388 subs r6, 1                                                                    |         r6--;
    0x0002438a add.w r8, r8, 0x18                                                            |         r8 += 0x18;
    0x0002438e bne 0x2437e                                                                   |         
                                                                                             |     } while (r6 != 1);
    0x00024390 ldr r3, [sp, 4]                                                               |     r3 = var_4h_3;
    0x00024392 ldr.w sl, [r7, 4]                                                             |     sl = *((r7 + 4));
    0x00024396 cmp r3, 0                                                                     |     
    0x00024398 it le                                                                         |     
                                                                                             |     if (r3 > 0) {
    0x0002439a movle r3, 0x18                                                                |         r3 = 0x18;
                                                                                             |     }
    0x0002439c add r5, r3                                                                    |     r5 += r3;
                                                                                             | label_9:
    0x0002439e cmp sl, r5                                                                    |     
    0x000243a0 it ne                                                                         |     
                                                                                             |     if (sl == r5) {
    0x000243a2 addne r4, r5, 8                                                               |         r4 = r5 + 8;
                                                                                             |     }
                                                                                             |     if (sl == r5) {
    0x000243a6 beq 0x243bc                                                                   |         goto label_1;
                                                                                             |     }
                                                                                             |     do {
    0x000243a8 ldr r0, [r4, -0x8]                                                            |         r0 = *((r4 - 0x8));
    0x000243ac cmp r0, r4                                                                    |         
                                                                                             |         if (r0 != r4) {
    0x000243ae beq 0x243b4                                                                   |             
    0x000243b0 blx 0xe9a4                                                                    |             fcn_0000e9a4 ();
                                                                                             |         }
    0x000243b4 adds r5, 0x18                                                                 |         r5 += 0x18;
    0x000243b6 adds r4, 0x18                                                                 |         r4 += 0x18;
    0x000243b8 cmp r5, sl                                                                    |         
    0x000243ba bne 0x243a8                                                                   |         
                                                                                             |     } while (r5 != sl);
                                                                                             | label_1:
    0x000243bc ldr r3, [r7]                                                                  |     r3 = *(r7);
    0x000243be ldr r2, [sp, 4]                                                               |     r2 = var_4h_3;
    0x000243c0 add r3, r2                                                                    |     r3 += r2;
                                                                                             | label_5:
    0x000243c2 str r3, [r7, 4]                                                               |     *((r7 + 4)) = r3;
                                                                                             | label_6:
    0x000243c4 mov r0, r7                                                                    |     r0 = r7;
    0x000243c6 blx 0xeaac                                                                    |     fcn_0000eaac ();
    0x000243ca ldr r2, [pc, 0x230]                                                           |     
    0x000243cc ldr r3, [pc, 0x228]                                                           |     r3 = *(0x245f8);
    0x000243ce add r2, pc                                                                    |     r2 = 0x489d0;
    0x000243d0 ldr r3, [r2, r3]                                                              |     r3 = *(0x489d0);
    0x000243d2 ldr r2, [r3]                                                                  |     r2 = *(0x489d0);
    0x000243d4 ldr r3, [sp, 0x14]                                                            |     r3 = var_14h;
    0x000243d6 eors r2, r3                                                                   |     r2 ^= r3;
    0x000243d8 mov.w r3, 0                                                                   |     r3 = 0;
                                                                                             |     if (r2 != r3) {
    0x000243dc bne.w 0x24596                                                                 |         goto label_10;
                                                                                             |     }
    0x000243e0 mov r0, r7                                                                    |     r0 = r7;
    0x000243e2 add sp, 0x1c                                                                  |     
    0x000243e4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                    |     
                                                                                             | label_7:
    0x000243e8 cmp r2, 0                                                                     |     
                                                                                             |     if (r2 == 0) {
    0x000243ea beq.w 0x24524                                                                 |         goto label_11;
                                                                                             |     }
    0x000243ee movw r3, 0xfff8                                                               |     
    0x000243f2 movt r3, 0x7fff                                                               |     r3 = 0x7ffffff8;
    0x000243f6 cmp r2, r3                                                                    |     
                                                                                             |     if (r2 > r3) {
    0x000243f8 bhi.w 0x2458a                                                                 |         goto label_12;
                                                                                             |     }
    0x000243fc ldr r0, [sp, 4]                                                               |     r0 = var_4h_3;
    0x000243fe blx 0xe5ec                                                                    |     r0 = fcn_0000e5ec ();
    0x00024400 ldrd sb, r0, [r6], 0xc                                                        |     __asm ("ldrd sb, r0, [r6], 0xc");
                                                                                             | label_4:
    0x00024404 cmp sb, r4                                                                    |     
                                                                                             |     if (sb == r4) {
    0x00024406 beq.w 0x2454c                                                                 |         goto label_13;
                                                                                             |     }
    0x0002440a ldr r3, [sp, 0xc]                                                             |     r3 = var_ch;
    0x0002440c mov.w fp, 0                                                                   |     
    0x00024410 add.w r6, r3, 0x18                                                            |     r6 = r3 + 0x18;
    0x00024414 add r3, sp, 0x10                                                              |     r3 += var_10h;
    0x00024416 str r3, [sp, 8]                                                               |     var_8h_2 = r3;
    0x00024418 b 0x24436                                                                     |     
                                                                                             |     while (r5 == 1) {
    0x0002441a ldrb.w r3, [r8]                                                               |         r3 = *(r8);
    0x0002441e strb r3, [r6, -0x10]                                                          |         *((r6 - 0x10)) = r3;
                                                                                             | label_0:
    0x00024422 adds r4, 0x18                                                                 |         r4 += 0x18;
    0x00024424 str r5, [r6, -0x14]                                                           |         *((r6 - 0x14)) = r5;
    0x00024428 cmp sb, r4                                                                    |         
    0x0002442a add.w r6, r6, 0x18                                                            |         r6 += 0x18;
    0x0002442e strb.w fp, [r0, r5]                                                           |         *((r0 + r5)) = fp;
                                                                                             |         if (sb == r4) {
    0x00024432 beq.w 0x2454c                                                                 |             goto label_13;
                                                                                             |         }
    0x00024436 sub.w r0, r6, 0x10                                                            |         r0 = r6 - 0x10;
    0x0002443a ldr r5, [r4, 4]                                                               |         r5 = *((r4 + 4));
    0x0002443c str r0, [r6, -0x18]                                                           |         *((r6 - 0x18)) = r0;
    0x00024440 sub.w sl, r6, 0x18                                                            |         sl = r6 - 0x18;
    0x00024444 ldr.w r8, [r4]                                                                |         r8 = *(r4);
    0x00024448 rsbs r3, r5, 0                                                                |         r3 = r5 - ;
    0x0002444a clz r2, r8                                                                    |         r2 &= r8;
    0x0002444c invalid                                                                       |         
    0x00024450 lsr.w r2, r2, 5                                                               |         r2 >>= 5;
    0x00024454 it eq                                                                         |         
                                                                                             |         if (sb != r4) {
    0x00024456 moveq r2, 0                                                                   |             r2 = 0;
                                                                                             |         }
    0x00024458 cmp r2, 0                                                                     |         
                                                                                             |         if (r2 != 0) {
    0x0002445a bne.w 0x245a2                                                                 |             goto label_14;
                                                                                             |         }
    0x0002445e cmp r5, 0xf                                                                   |         
    0x00024460 str r5, [sp, 0x10]                                                            |         var_10h = r5;
                                                                                             |         if (r5 > 0xf) {
    0x00024462 bhi 0x2452a                                                                   |             goto label_15;
                                                                                             |         }
    0x00024464 cmp r5, 1                                                                     |         
    0x00024466 beq 0x2441a                                                                   |         
                                                                                             |     }
    0x00024468 cmp r5, 0                                                                     |     
                                                                                             |     if (r5 == 0) {
    0x0002446a beq 0x24422                                                                   |         goto label_0;
                                                                                             |     }
    0x0002446c b 0x2453c                                                                     |     goto label_16;
                                                                                             | label_8:
    0x0002446e asrs r6, r3, 3                                                                |     r6 = r3 >> 3;
    0x00024470 movw r2, 0xaaab                                                               |     
    0x00024474 cmp r3, 0                                                                     |     
                                                                                             |     /* if there is a right shift of 1, then it's a division by 1/3 */
    0x00024476 movt r2, 0xaaaa                                                               |     r2 = 0xaaaaaaab;
    0x0002447a mul r6, r2, r6                                                                |     r6 = r2 * r6;
                                                                                             |     if (r3 <= 0) {
    0x0002447e ble 0x2449e                                                                   |         goto label_17;
                                                                                             |     }
                                                                                             |     do {
    0x00024480 mov r1, r4                                                                    |         r1 = r4;
    0x00024482 mov r0, r5                                                                    |         r0 = r5;
    0x00024484 adds r4, 0x18                                                                 |         r4 += 0x18;
    0x00024486 blx 0xe7b8                                                                    |         fcn_0000e7b8 ();
    0x0002448a subs r6, 1                                                                    |         r6--;
    0x0002448c add.w r5, r5, 0x18                                                            |         r5 += 0x18;
    0x00024490 bne 0x24480                                                                   |         
                                                                                             |     } while (r6 != 1);
    0x00024492 ldrd r5, sl, [r7]                                                             |     __asm ("ldrd r5, sl, [r7]");
    0x00024496 ldrd r4, sb, [r8]                                                             |     __asm ("ldrd r4, sb, [r8]");
    0x0002449a sub.w r3, sl, r5                                                              |     r3 = sl - r5;
                                                                                             | label_17:
    0x0002449e add r4, r3                                                                    |     r4 += r3;
    0x000244a0 cmp r4, sb                                                                    |     
                                                                                             |     if (r4 == sb) {
    0x000244a2 beq 0x24584                                                                   |         goto label_18;
                                                                                             |     }
    0x000244a4 add r3, sp, 0x10                                                              |     r3 += var_10h;
    0x000244a6 add.w r6, sl, 0x18                                                            |     r6 = sl + 0x18;
    0x000244aa str r3, [sp, 8]                                                               |     var_8h_2 = r3;
    0x000244ac b 0x244cc                                                                     |     goto label_19;
                                                                                             | label_2:
    0x000244ae ldrb.w r3, [r8]                                                               |     r3 = *(r8);
    0x000244b2 strb r3, [r6, -0x10]                                                          |     *((r6 - 0x10)) = r3;
                                                                                             | label_3:
    0x000244b6 adds r4, 0x18                                                                 |     r4 += 0x18;
    0x000244b8 mov.w r3, 0                                                                   |     r3 = 0;
    0x000244bc cmp r4, sb                                                                    |     
    0x000244be str r5, [r6, -0x14]                                                           |     *((r6 - 0x14)) = r5;
    0x000244c2 add.w r6, r6, 0x18                                                            |     r6 += 0x18;
    0x000244c6 strb r3, [r0, r5]                                                             |     *((r0 + r5)) = r3;
                                                                                             |     if (r4 == sb) {
    0x000244c8 beq.w 0x243bc                                                                 |         goto label_1;
                                                                                             |     }
                                                                                             | label_19:
    0x000244cc sub.w r0, r6, 0x10                                                            |     r0 = r6 - 0x10;
    0x000244d0 ldr r5, [r4, 4]                                                               |     r5 = *((r4 + 4));
    0x000244d2 str r0, [r6, -0x18]                                                           |     *((r6 - 0x18)) = r0;
    0x000244d6 sub.w fp, r6, 0x18                                                            |     
    0x000244da ldr.w r8, [r4]                                                                |     r8 = *(r4);
    0x000244de rsbs r3, r5, 0                                                                |     r3 = r5 - ;
    0x000244e0 clz r2, r8                                                                    |     r2 &= r8;
    0x000244e4 cmp r8, r3                                                                    |     
    0x000244e6 lsr.w r2, r2, 5                                                               |     r2 >>= 5;
    0x000244ea it eq                                                                         |     
                                                                                             |     if (r8 != r3) {
    0x000244ec moveq r2, 0                                                                   |         r2 = 0;
                                                                                             |     }
    0x000244ee cmp r2, 0                                                                     |     
                                                                                             |     if (r2 != 0) {
    0x000244f0 bne 0x2459a                                                                   |         goto label_20;
                                                                                             |     }
    0x000244f2 cmp r5, 0xf                                                                   |     
    0x000244f4 str r5, [sp, 0x10]                                                            |     var_10h = r5;
                                                                                             |     if (r5 > 0xf) {
    0x000244f6 bhi 0x24502                                                                   |         goto label_21;
                                                                                             |     }
    0x000244f8 cmp r5, 1                                                                     |     
                                                                                             |     if (r5 == 1) {
    0x000244fa beq 0x244ae                                                                   |         goto label_2;
                                                                                             |     }
    0x000244fc cmp r5, 0                                                                     |     
                                                                                             |     if (r5 == 0) {
    0x000244fe beq 0x244b6                                                                   |         goto label_3;
                                                                                             |     }
    0x00024500 b 0x24514                                                                     |     goto label_22;
                                                                                             | label_21:
    0x00024502 ldr r1, [sp, 8]                                                               |     r1 = var_8h_2;
    0x00024504 mov r0, fp                                                                    |     r0 = fp;
    0x00024506 blx 0xed18                                                                    |     fcn_0000ed18 ();
    0x0002450a ldr r3, [sp, 0x10]                                                            |     r3 = var_10h;
    0x0002450c str r0, [r6, -0x18]                                                           |     *((r6 - 0x18)) = r0;
    0x00024510 str r3, [r6, -0x10]                                                           |     *((r6 - 0x10)) = r3;
                                                                                             | label_22:
    0x00024514 mov r2, r5                                                                    |     r2 = r5;
    0x00024516 mov r1, r8                                                                    |     r1 = r8;
    0x00024518 blx 0xebf8                                                                    |     fcn_0000ebf8 ();
    0x0002451c ldr r5, [sp, 0x10]                                                            |     r5 = var_10h;
    0x0002451e ldr r0, [r6, -0x18]                                                           |     r0 = *((r6 - 0x18));
    0x00024520 lsrs r0, r3, 0x10                                                             |     r0 = r3 >> 0x10;
    0x00024522 b 0x244b6                                                                     |     goto label_3;
                                                                                             | label_11:
    0x00024524 ldr r3, [sp, 4]                                                               |     r3 = var_4h_3;
    0x00024526 str r3, [sp, 0xc]                                                             |     var_ch = r3;
    0x00024528 b 0x24404                                                                     |     goto label_4;
                                                                                             | label_15:
    0x0002452a ldr r1, [sp, 8]                                                               |     r1 = var_8h_2;
    0x0002452c mov r0, sl                                                                    |     r0 = sl;
    0x0002452e blx 0xed18                                                                    |     fcn_0000ed18 ();
    0x00024532 ldr r3, [sp, 0x10]                                                            |     r3 = var_10h;
    0x00024534 str r0, [r6, -0x18]                                                           |     *((r6 - 0x18)) = r0;
    0x00024538 str r3, [r6, -0x10]                                                           |     *((r6 - 0x10)) = r3;
                                                                                             | label_16:
    0x0002453c mov r2, r5                                                                    |     r2 = r5;
    0x0002453e mov r1, r8                                                                    |     r1 = r8;
    0x00024540 blx 0xebf8                                                                    |     fcn_0000ebf8 ();
    0x00024544 ldr r5, [sp, 0x10]                                                            |     r5 = var_10h;
    0x00024546 ldr r0, [r6, -0x18]                                                           |     r0 = *((r6 - 0x18));
    0x0002454a b 0x24422                                                                     |     goto label_0;
                                                                                             | label_13:
    0x0002454c ldrd r5, r6, [r7]                                                             |     __asm ("ldrd r5, r6, [r7]");
    0x00024550 cmp r5, r6                                                                    |     
    0x00024552 it ne                                                                         |     
                                                                                             |     if (r5 == r6) {
    0x00024554 addne r4, r5, 8                                                               |         r4 = r5 + 8;
                                                                                             |     }
                                                                                             |     if (r5 == r6) {
    0x00024558 beq 0x24570                                                                   |         goto label_23;
                                                                                             |     }
                                                                                             |     do {
    0x0002455a ldr r0, [r4, -0x8]                                                            |         r0 = *((r4 - 0x8));
    0x0002455e cmp r0, r4                                                                    |         
                                                                                             |         if (r0 != r4) {
    0x00024560 beq 0x24566                                                                   |             
    0x00024562 blx 0xe9a4                                                                    |             fcn_0000e9a4 ();
                                                                                             |         }
    0x00024566 adds r5, 0x18                                                                 |         r5 += 0x18;
    0x00024568 adds r4, 0x18                                                                 |         r4 += 0x18;
    0x0002456a cmp r6, r5                                                                    |         
    0x0002456c bne 0x2455a                                                                   |         
                                                                                             |     } while (r6 != r5);
    0x0002456e ldr r6, [r7]                                                                  |     r6 = *(r7);
                                                                                             |     if (r6 != 0) {
                                                                                             | label_23:
    0x00024570 cbz r6, 0x24578                                                               |         
    0x00024572 mov r0, r6                                                                    |         r0 = r6;
    0x00024574 blx 0xe9a4                                                                    |         fcn_0000e9a4 ();
                                                                                             |     }
    0x00024578 ldr r2, [sp, 0xc]                                                             |     r2 = var_ch;
    0x0002457a ldr r3, [sp, 4]                                                               |     r3 = var_4h_3;
    0x0002457c str r2, [r7]                                                                  |     *(r7) = r2;
    0x0002457e add r3, r2                                                                    |     r3 += r2;
    0x00024580 str r3, [r7, 8]                                                               |     *((r7 + 8)) = r3;
    0x00024582 b 0x243c2                                                                     |     goto label_5;
                                                                                             | label_18:
    0x00024584 ldr r3, [sp, 4]                                                               |     r3 = var_4h_3;
    0x00024586 add r3, r5                                                                    |     r3 += r5;
    0x00024588 b 0x243c2                                                                     |     goto label_5;
                                                                                             | label_12:
    0x0002458a cmp r2, 0                                                                     |     
                                                                                             |     if (r2 < 0) {
    0x0002458c bge 0x24592                                                                   |         
    0x0002458e blx 0xe8c0                                                                    |         fcn_0000e8c0 ();
                                                                                             |     }
    0x00024592 blx 0xe6bc                                                                    |     fcn_0000e6bc ();
                                                                                             | label_10:
    0x00024596 blx 0xea48                                                                    |     fcn_0000ea48 ();
                                                                                             | label_20:
    0x0002459a ldr r0, [pc, 0x64]                                                            |     
    0x0002459c add r0, pc                                                                    |     r0 = 0x48ba2;
    0x0002459e blx 0xe86c                                                                    |     fcn_0000e86c ();
                                                                                             | label_14:
    0x000245a2 ldr r0, [pc, 0x60]                                                            |     
    0x000245a4 add r0, pc                                                                    |     r0 = 0x48bae;
    0x000245a6 blx 0xe86c                                                                    |     fcn_0000e86c ();
    0x000245aa blx 0xe71c                                                                    |     fcn_0000e71c ();
    0x000245ae mov r1, fp                                                                    |     r1 = fp;
    0x000245b0 mov r0, sl                                                                    |     r0 = sl;
    0x000245b2 bl 0x24c14                                                                    |     r0 = fcn_00024c14 (r0, r1);
    0x000245b6 blx 0xebdc                                                                    |     r0 = malloc (r0);
    0x000245ba blx 0xe71c                                                                    |     fcn_0000e71c ();
    0x000245be ldr r0, [sp, 0xc]                                                             |     r0 = var_ch;
    0x000245c0 mov r1, sl                                                                    |     r1 = sl;
    0x000245c2 bl 0x24c14                                                                    |     r0 = fcn_00024c14 (r0, r1);
    0x000245c6 blx 0xebdc                                                                    |     r0 = malloc (r0);
    0x000245ca blx 0xec7c                                                                    |     fcn_0000ec7c ();
    0x000245ce blx 0xea54                                                                    |     r0 = fcn_0000ea54 ();
    0x000245d2 mov r4, r0                                                                    |     r4 = r0;
    0x000245d4 blx 0xec7c                                                                    |     fcn_0000ec7c ();
    0x000245d8 mov r0, r4                                                                    |     r0 = r4;
    0x000245da blx 0xe71c                                                                    |     fcn_0000e71c ();
    0x000245de ldr r3, [sp, 0xc]                                                             |     r3 = var_ch;
                                                                                             |     if (r3 != 0) {
    0x000245e0 cbz r3, 0x245e8                                                               |         
    0x000245e2 mov r0, r3                                                                    |         r0 = r3;
    0x000245e4 blx 0xe9a4                                                                    |         fcn_0000e9a4 ();
                                                                                             |     }
    0x000245e8 blx 0xebdc                                                                    |     r0 = malloc (r0);
    0x000245ec blx 0xec7c                                                                    |     fcn_0000ec7c ();
    0x000245f0 blx 0xea54                                                                    |     fcn_0000ea54 ();
    0x000245f4 str r7, [sp, 0x3f0]                                                           |     *(arg_3f0h) = r7;
    0x000245f6 movs r1, r0                                                                   |     r1 = r0;
    0x000245f8 lsls r0, r6, 0xc                                                              |     r0 = r6 << 0xc;
    0x000245fa movs r0, r0                                                                   |     
    0x000245fc str r7, [sp, 0x188]                                                           |     *(arg_188h) = r7;
    0x000245fe movs r1, r0                                                                   |     r1 = r0;
    0x00024600 rors r0, r3                                                                   |     __asm ("rors r0, r3");
    0x00024602 movs r0, r0                                                                   |     
    0x00024604 rors r0, r2                                                                   |     __asm ("rors r0, r2");
    0x00024606 movs r0, r0                                                                   |     
                                                                                             | }
    ; assembly                                                                                                                                       | /* r2dec pseudo code output */
                                                                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x2409c */
                                                                                                                                                     | #include <stdint.h>
                                                                                                                                                     |  
    ; (fcn) method.mqtt::string_collection.push_back_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_ ()       | void method_mqtt::string_collection_push_back_std::_cxx11::basic_string_char_std::char_traits_char_std::allocator_char_const_ (int16_t arg_f0h, int16_t arg_230h, int16_t arg1, int16_t arg2) {
                                                                                                                                                     |     int16_t var_ch;
                                                                                                                                                     |     int16_t var_0h;
                                                                                                                                                     |     int16_t var_4h;
                                                                                                                                                     |     r0 = arg1;
                                                                                                                                                     |     r1 = arg2;
                                                                                                                                                     |     /* mqtt::string_collection::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) */
    0x0002409c blmi 0xaf694c                                                                                                                         |     __asm ("blmi aav.0x00019a8c");
    0x000240a0 push {r4, r5, r6, r7, lr}                                                                                                             |     
    0x000240a2 sub sp, 0xc                                                                                                                           |     
    0x000240a4 add r2, pc                                                                                                                            |     r2 += pc;
    0x000240a6 mov r4, r0                                                                                                                            |     r4 = r0;
    0x000240a8 ldr r3, [r2, r3]                                                                                                                      |     r3 = *((r2 + r3));
    0x000240aa ldr r3, [r3]                                                                                                                          |     r3 = *(r3);
    0x000240ac str r3, [sp, 4]                                                                                                                       |     var_4h = r3;
    0x000240ae mov.w r3, 0                                                                                                                           |     r3 = 0;
    0x000240b2 ldrd r5, r3, [r0, 4]                                                                                                                  |     __asm ("ldrd r5, r3, [r0, 4]");
    0x000240b6 cmp r5, r3                                                                                                                            |     
                                                                                                                                                     |     if (r5 == r3) {
    0x000240b8 beq 0x2412c                                                                                                                           |         goto label_3;
                                                                                                                                                     |     }
    0x000240ba add.w r0, r5, 8                                                                                                                       |     r0 = r5 + 8;
    0x000240be str r0, [r5]                                                                                                                          |     *(r5) = r0;
    0x000240c0 ldrd r7, r6, [r1]                                                                                                                     |     __asm ("ldrd r7, r6, [r1]");
    0x000240c4 rsbs r3, r6, 0                                                                                                                        |     r3 = r6 - ;
    0x000240c6 clz r2, r7                                                                                                                            |     r2 &= r7;
    0x000240ca lsrs r2, r2, 5                                                                                                                        |     r2 >>= 5;
    0x000240cc cmp r7, r3                                                                                                                            |     
    0x000240ce it eq                                                                                                                                 |     
                                                                                                                                                     |     if (r7 != r3) {
    0x000240d0 moveq r2, 0                                                                                                                           |         r2 = 0;
                                                                                                                                                     |     }
    0x000240d2 cmp r2, 0                                                                                                                             |     
                                                                                                                                                     |     if (r2 != 0) {
    0x000240d4 bne 0x24140                                                                                                                           |         goto label_4;
                                                                                                                                                     |     }
    0x000240d6 cmp r6, 0xf                                                                                                                           |     
    0x000240d8 str r6, [sp]                                                                                                                          |     *(sp) = r6;
                                                                                                                                                     |     if (r6 > 0xf) {
    0x000240da bhi 0x24110                                                                                                                           |         goto label_5;
                                                                                                                                                     |     }
    0x000240dc cmp r6, 1                                                                                                                             |     
                                                                                                                                                     |     if (r6 != 1) {
    0x000240de bne 0x24136                                                                                                                           |         goto label_6;
                                                                                                                                                     |     }
    0x000240e0 ldrb r3, [r7]                                                                                                                         |     r3 = *(r7);
    0x000240e2 strb r3, [r5, 8]                                                                                                                      |     *((r5 + 8)) = r3;
                                                                                                                                                     |     do {
                                                                                                                                                     | label_1:
    0x000240e4 movs r3, 0                                                                                                                            |         r3 = 0;
    0x000240e6 str r6, [r5, 4]                                                                                                                       |         *((r5 + 4)) = r6;
    0x000240e8 strb r3, [r0, r6]                                                                                                                     |         *((r0 + r6)) = r3;
    0x000240ea ldr r3, [r4, 4]                                                                                                                       |         r3 = *((r4 + 4));
    0x000240ec adds r3, 0x18                                                                                                                         |         r3 += 0x18;
    0x000240ee str r3, [r4, 4]                                                                                                                       |         *((r4 + 4)) = r3;
                                                                                                                                                     | label_0:
    0x000240f0 ldr r2, [pc, 0x5c]                                                                                                                    |         
    0x000240f2 ldr r3, [pc, 0x58]                                                                                                                    |         r3 = *(0x2414e);
    0x000240f4 add r2, pc                                                                                                                            |         r2 = 0x48248;
    0x000240f6 ldr r3, [r2, r3]                                                                                                                      |         r3 = *(0x48248);
    0x000240f8 ldr r2, [r3]                                                                                                                          |         r2 = *(0x48248);
    0x000240fa ldr r3, [sp, 4]                                                                                                                       |         r3 = var_4h;
    0x000240fc eors r2, r3                                                                                                                           |         r2 ^= r3;
    0x000240fe mov.w r3, 0                                                                                                                           |         r3 = 0;
                                                                                                                                                     |         if (r2 != r3) {
    0x00024102 bne 0x2413c                                                                                                                           |             goto label_7;
                                                                                                                                                     |         }
    0x00024104 mov r0, r4                                                                                                                            |         r0 = r4;
    0x00024106 add sp, 0xc                                                                                                                           |         
    0x00024108 pop.w {r4, r5, r6, r7, lr}                                                                                                            |         
    0x0002410c b.w 0xeaa8                                                                                                                            |         void (*0xeaa8)() ();
                                                                                                                                                     | label_5:
    0x00024110 mov r1, sp                                                                                                                            |         r1 = sp;
    0x00024112 mov r0, r5                                                                                                                            |         r0 = r5;
    0x00024114 blx 0xed18                                                                                                                            |         fcn_0000ed18 ();
    0x00024116 vmla.f64 d9, d0, d0                                                                                                                   |         __asm ("vmla.f64 d9, d0, d0");
    0x0002411a str r0, [r5]                                                                                                                          |         *(r5) = r0;
    0x0002411c str r3, [r5, 8]                                                                                                                       |         *((r5 + 8)) = r3;
                                                                                                                                                     | label_2:
    0x0002411e mov r2, r6                                                                                                                            |         r2 = r6;
    0x00024120 mov r1, r7                                                                                                                            |         r1 = r7;
    0x00024122 blx 0xebf8                                                                                                                            |         fcn_0000ebf8 ();
    0x00024126 ldr r6, [sp]                                                                                                                          |         r6 = *(sp);
    0x00024128 ldr r0, [r5]                                                                                                                          |         r0 = *(r5);
    0x0002412a b 0x240e4                                                                                                                             |         
                                                                                                                                                     |     } while (1);
                                                                                                                                                     | label_3:
    0x0002412c mov r2, r1                                                                                                                            |     r2 = r1;
    0x0002412e mov r1, r5                                                                                                                            |     r1 = r5;
    0x00024130 blx 0xead0                                                                                                                            |     fcn_0000ead0 ();
    0x00024134 b 0x240f0                                                                                                                             |     goto label_0;
                                                                                                                                                     | label_6:
    0x00024136 cmp r6, 0                                                                                                                             |     
                                                                                                                                                     |     if (r6 == 0) {
    0x00024138 beq 0x240e4                                                                                                                           |         goto label_1;
                                                                                                                                                     |     }
    0x0002413a b 0x2411e                                                                                                                             |     goto label_2;
                                                                                                                                                     | label_7:
    0x0002413c blx 0xea48                                                                                                                            |     fcn_0000ea48 ();
                                                                                                                                                     | label_4:
    0x00024140 ldr r0, [pc, 0x10]                                                                                                                    |     
    0x00024142 add r0, pc                                                                                                                            |     r0 = 0x4829a;
    0x00024144 blx 0xe86c                                                                                                                            |     fcn_0000e86c ();
    0x00024148 ldr r2, [sp, 0x230]                                                                                                                   |     r2 = *(arg_230h);
    0x0002414a movs r1, r0                                                                                                                           |     r1 = r0;
    0x0002414c lsls r0, r6, 0xc                                                                                                                      |     r0 = r6 << 0xc;
    0x0002414e movs r0, r0                                                                                                                           |     
    0x00024150 ldr r2, [sp, 0xf0]                                                                                                                    |     r2 = *(arg_f0h);
    0x00024152 movs r1, r0                                                                                                                           |     r1 = r0;
    0x00024154 mov r2, r6                                                                                                                            |     r2 = r6;
    0x00024156 movs r0, r0                                                                                                                           |     
                                                                                                                                                     | }
    ; assembly                                                                                                                               | /* r2dec pseudo code output */
                                                                                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x2426c */
                                                                                                                                             | #include <stdint.h>
                                                                                                                                             |  
    ; (fcn) method.mqtt::string_collection.push_back_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____ ()     | void method_mqtt::string_collection_push_back_std::_cxx11::basic_string_char_std::char_traits_char_std::allocator_char_ (int16_t arg_1b0h, int16_t arg_2f0h, int16_t arg1, int16_t arg2) {
                                                                                                                                             |     int16_t var_0h_2;
                                                                                                                                             |     int16_t var_4h;
                                                                                                                                             |     r0 = arg1;
                                                                                                                                             |     r1 = arg2;
                                                                                                                                             |     do {
    0x0000eaa8 invalid                                                                                                                       |         void (*0xeaac)() ();
                                                                                                                                             |         /* mqtt::string_collection::push_back(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) */
    0x0002426c ldr r2, [pc, 0xa8]                                                                                                            |         
    0x0002426e ldr r3, [pc, 0xac]                                                                                                            |         r3 = *(0x2431e);
    0x00024270 push {r4, r5, r6, r7, lr}                                                                                                     |         
    0x00024272 sub sp, 0xc                                                                                                                   |         
    0x00024274 add r2, pc                                                                                                                    |         r2 = 0x48590;
    0x00024276 mov r4, r0                                                                                                                    |         r4 = r0;
    0x00024278 ldr r3, [r2, r3]                                                                                                              |         
    0x0002427a ldr r3, [r3]                                                                                                                  |         r3 = *(0x48590);
    0x0002427c str r3, [sp, 4]                                                                                                               |         var_4h = r3;
    0x0002427e mov.w r3, 0                                                                                                                   |         r3 = 0;
    0x00024282 ldrd r5, r3, [r0, 4]                                                                                                          |         __asm ("ldrd r5, r3, [r0, 4]");
    0x00024286 cmp r5, r3                                                                                                                    |         
                                                                                                                                             |         if (r5 == r3) {
    0x00024288 beq 0x242fc                                                                                                                   |             goto label_3;
                                                                                                                                             |         }
    0x0002428a add.w r0, r5, 8                                                                                                               |         r0 = r5 + 8;
    0x0002428e str r0, [r5]                                                                                                                  |         *(r5) = r0;
    0x00024290 ldrd r7, r6, [r1]                                                                                                             |         __asm ("ldrd r7, r6, [r1]");
    0x00024294 rsbs r3, r6, 0                                                                                                                |         r3 = r6 - ;
    0x00024296 clz r2, r7                                                                                                                    |         r2 &= r7;
    0x0002429a lsrs r2, r2, 5                                                                                                                |         r2 >>= 5;
    0x0002429c cmp r7, r3                                                                                                                    |         
    0x0002429e it eq                                                                                                                         |         
                                                                                                                                             |         if (r7 != r3) {
    0x000242a0 moveq r2, 0                                                                                                                   |             r2 = 0;
                                                                                                                                             |         }
    0x000242a2 cmp r2, 0                                                                                                                     |         
                                                                                                                                             |         if (r2 != 0) {
    0x000242a4 bne 0x24310                                                                                                                   |             goto label_4;
                                                                                                                                             |         }
    0x000242a6 cmp r6, 0xf                                                                                                                   |         
    0x000242a8 str r6, [sp]                                                                                                                  |         *(sp) = r6;
                                                                                                                                             |         if (r6 > 0xf) {
    0x000242aa bhi 0x242e0                                                                                                                   |             goto label_5;
                                                                                                                                             |         }
    0x000242ac cmp r6, 1                                                                                                                     |         
                                                                                                                                             |         if (r6 != 1) {
    0x000242ae bne 0x24306                                                                                                                   |             goto label_6;
                                                                                                                                             |         }
    0x000242b0 ldrb r3, [r7]                                                                                                                 |         r3 = *(r7);
    0x000242b2 strb r3, [r5, 8]                                                                                                              |         *((r5 + 8)) = r3;
                                                                                                                                             | label_0:
    0x000242b4 movs r3, 0                                                                                                                    |         r3 = 0;
    0x000242b6 str r6, [r5, 4]                                                                                                               |         *((r5 + 4)) = r6;
    0x000242b8 strb r3, [r0, r6]                                                                                                             |         *((r0 + r6)) = r3;
    0x000242ba ldr r3, [r4, 4]                                                                                                               |         r3 = *((r4 + 4));
    0x000242bc adds r3, 0x18                                                                                                                 |         r3 += 0x18;
    0x000242be str r3, [r4, 4]                                                                                                               |         *((r4 + 4)) = r3;
                                                                                                                                             | label_1:
    0x000242c0 ldr r2, [pc, 0x5c]                                                                                                            |         
    0x000242c2 ldr r3, [pc, 0x58]                                                                                                            |         r3 = *(0x2431e);
    0x000242c4 add r2, pc                                                                                                                    |         r2 = 0x485e8;
    0x000242c6 ldr r3, [r2, r3]                                                                                                              |         r3 = *(0x485e8);
    0x000242c8 ldr r2, [r3]                                                                                                                  |         r2 = *(0x485e8);
    0x000242ca ldr r3, [sp, 4]                                                                                                               |         r3 = var_4h;
    0x000242cc eors r2, r3                                                                                                                   |         r2 ^= r3;
    0x000242ce mov.w r3, 0                                                                                                                   |         r3 = 0;
                                                                                                                                             |         if (r2 != r3) {
    0x000242d2 bne 0x2430c                                                                                                                   |             goto label_7;
                                                                                                                                             |         }
    0x000242d4 mov r0, r4                                                                                                                    |         r0 = r4;
    0x000242d6 add sp, 0xc                                                                                                                   |         
    0x000242d8 pop.w {r4, r5, r6, r7, lr}                                                                                                    |         
    0x000242dc b.w 0xeaa8                                                                                                                    |         
                                                                                                                                             |     } while (1);
                                                                                                                                             | label_5:
    0x000242e0 mov r1, sp                                                                                                                    |     r1 = sp;
    0x000242e2 mov r0, r5                                                                                                                    |     r0 = r5;
    0x000242e4 blx 0xed18                                                                                                                    |     fcn_0000ed18 ();
    0x000242e8 ldr r3, [sp]                                                                                                                  |     r3 = *(sp);
    0x000242ea str r0, [r5]                                                                                                                  |     *(r5) = r0;
    0x000242ec str r3, [r5, 8]                                                                                                               |     *((r5 + 8)) = r3;
                                                                                                                                             | label_2:
    0x000242ee mov r2, r6                                                                                                                    |     r2 = r6;
    0x000242f0 mov r1, r7                                                                                                                    |     r1 = r7;
    0x000242f2 blx 0xebf8                                                                                                                    |     fcn_0000ebf8 ();
    0x000242f6 ldr r6, [sp]                                                                                                                  |     r6 = *(sp);
    0x000242f8 ldr r0, [r5]                                                                                                                  |     r0 = *(r5);
    0x000242fa b 0x242b4                                                                                                                     |     goto label_0;
                                                                                                                                             | label_3:
    0x000242fc mov r2, r1                                                                                                                    |     r2 = r1;
    0x000242fe mov r1, r5                                                                                                                    |     r1 = r5;
    0x00024300 blx 0xead0                                                                                                                    |     fcn_0000ead0 ();
    0x00024304 b 0x242c0                                                                                                                     |     goto label_1;
                                                                                                                                             | label_6:
    0x00024306 cmp r6, 0                                                                                                                     |     
                                                                                                                                             |     if (r6 == 0) {
    0x00024308 beq 0x242b4                                                                                                                   |         goto label_0;
                                                                                                                                             |     }
    0x0002430a b 0x242ee                                                                                                                     |     goto label_2;
                                                                                                                                             | label_7:
    0x0002430c blx 0xea48                                                                                                                    |     fcn_0000ea48 ();
                                                                                                                                             | label_4:
    0x00024310 ldr r0, [pc, 0x10]                                                                                                            |     
    0x00024312 add r0, pc                                                                                                                    |     r0 = 0x4863a;
    0x00024314 blx 0xe86c                                                                                                                    |     fcn_0000e86c ();
    0x00024318 ldr r0, [sp, 0x2f0]                                                                                                           |     r0 = *(arg_2f0h);
    0x0002431a movs r1, r0                                                                                                                   |     r1 = r0;
    0x0002431c lsls r0, r6, 0xc                                                                                                              |     r0 = r6 << 0xc;
    0x0002431e movs r0, r0                                                                                                                   |     
    0x00024320 ldr r0, [sp, 0x1b0]                                                                                                           |     r0 = *(arg_1b0h);
    0x00024322 movs r1, r0                                                                                                                   |     r1 = r0;
    0x00024324 add r2, ip                                                                                                                    |     r2 += ip;
    0x00024326 movs r0, r0                                                                                                                   |     
                                                                                                                                             | }
    ; assembly                                                                                       | /* r2dec pseudo code output */
                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x24784 */
                                                                                                     | #include <stdint.h>
                                                                                                     |  
    ; (fcn) method.mqtt::string_collection.string_collection_mqtt::string_collection_const_ ()       | void method_mqtt::string_collection_string_collection_mqtt::string_collection_const_ (int16_t arg1, int16_t arg2) {
                                                                                                     |     int16_t var_0h;
                                                                                                     |     int16_t var_4h;
                                                                                                     |     int16_t var_8h;
                                                                                                     |     int16_t var_ch;
                                                                                                     |     r0 = arg1;
                                                                                                     |     r1 = arg2;
                                                                                                     |     /* mqtt::string_collection::string_collection(mqtt::string_collection const&) */
    0x00024784 svcmi 0xf0e92d                                                                        |     __asm ("svcmi aav.0x000000ff");
    0x00024788 mov r8, r0                                                                            |     r8 = r0;
    0x0002478a ldr r0, [pc, 0x150]                                                                   |     
    0x0002478c mov r5, r1                                                                            |     r5 = r1;
    0x0002478e movs r3, 0                                                                            |     r3 = 0;
    0x00024790 sub sp, 0x14                                                                          |     
    0x00024792 ldrd r2, r4, [r1]                                                                     |     __asm ("ldrd r2, r4, [r1]");
    0x00024796 ldr r1, [pc, 0x148]                                                                   |     r1 = *(0x248e2);
    0x00024798 add r0, pc                                                                            |     r0 = 0x4907a;
    0x0002479a subs r4, r4, r2                                                                       |     r4 -= r2;
    0x0002479c ldr r1, [r0, r1]                                                                      |     
    0x0002479e ldr r1, [r1]                                                                          |     r1 = *(0x4907a);
    0x000247a0 str r1, [sp, 0xc]                                                                     |     var_ch = r1;
    0x000247a2 mov.w r1, 0                                                                           |     r1 = 0;
    0x000247a6 strd r3, r3, [r8]                                                                     |     __asm ("strd r3, r3, [r8]");
    0x000247aa str.w r3, [r8, 8]                                                                     |     __asm ("str.w r3, [r8, 8]");
                                                                                                     |     if (r4 == r4) {
    0x000247ae beq 0x24888                                                                           |         goto label_4;
                                                                                                     |     }
    0x000247b0 movw r3, 0xfff8                                                                       |     
    0x000247b4 movt r3, 0x7fff                                                                       |     r3 = 0x7ffffff8;
    0x000247b8 cmp r4, r3                                                                            |     
                                                                                                     |     if (r4 > r3) {
    0x000247ba bhi 0x2488c                                                                           |         goto label_5;
                                                                                                     |     }
    0x000247bc mov r0, r4                                                                            |     r0 = r4;
    0x000247be blx 0xe5ec                                                                            |     fcn_0000e5ec ();
    0x000247c2 str r0, [sp, 4]                                                                       |     var_4h = r0;
                                                                                                     | label_1:
    0x000247c4 ldr r3, [sp, 4]                                                                       |     r3 = var_4h;
    0x000247c6 add r4, r3                                                                            |     r4 += r3;
    0x000247c8 strd r3, r3, [r8]                                                                     |     __asm ("strd r3, r3, [r8]");
    0x000247cc str.w r4, [r8, 8]                                                                     |     __asm ("str.w r4, [r8, 8]");
    0x000247d0 ldrd r6, sl, [r5]                                                                     |     __asm ("ldrd r6, sl, [r5]");
    0x000247d4 cmp r6, sl                                                                            |     
                                                                                                     |     if (r6 == sl) {
    0x000247d6 beq 0x24854                                                                           |         goto label_6;
                                                                                                     |     }
    0x000247d8 add.w r4, r3, 0x18                                                                    |     r4 = r3 + 0x18;
    0x000247dc add r3, sp, 8                                                                         |     r3 += var_8h;
    0x000247de str r3, [sp]                                                                          |     *(sp) = r3;
    0x000247e0 b 0x247fc                                                                             |     
                                                                                                     |     while (r5 == 1) {
    0x000247e2 ldrb r3, [r7]                                                                         |         r3 = *(r7);
    0x000247e4 strb r3, [r4, -0x10]                                                                  |         *((r4 - 0x10)) = r3;
                                                                                                     | label_0:
    0x000247e8 adds r6, 0x18                                                                         |         r6 += 0x18;
    0x000247ea mov.w r3, 0                                                                           |         r3 = 0;
    0x000247ee cmp sl, r6                                                                            |         
    0x000247f0 str r5, [r4, -0x14]                                                                   |         *((r4 - 0x14)) = r5;
    0x000247f4 add.w r4, r4, 0x18                                                                    |         r4 += 0x18;
    0x000247f8 strb r3, [r0, r5]                                                                     |         *((r0 + r5)) = r3;
                                                                                                     |         if (sl == r6) {
    0x000247fa beq 0x24858                                                                           |             goto label_7;
                                                                                                     |         }
    0x000247fc sub.w r0, r4, 0x10                                                                    |         r0 = r4 - 0x10;
    0x00024800 ldr r5, [r6, 4]                                                                       |         r5 = *((r6 + 4));
    0x00024802 str r0, [r4, -0x18]                                                                   |         *((r4 - 0x18)) = r0;
    0x00024806 sub.w sb, r4, 0x18                                                                    |         sb = r4 - 0x18;
    0x0002480a ldr r7, [r6]                                                                          |         r7 = *(r6);
    0x0002480c mov fp, r4                                                                            |         
    0x0002480e rsbs r3, r5, 0                                                                        |         r3 = r5 - ;
    0x00024810 clz r2, r7                                                                            |         r2 &= r7;
    0x00024814 cmp r7, r3                                                                            |         
    0x00024816 lsr.w r2, r2, 5                                                                       |         r2 >>= 5;
    0x0002481a it eq                                                                                 |         
                                                                                                     |         if (r7 != r3) {
    0x0002481c moveq r2, 0                                                                           |             r2 = 0;
                                                                                                     |         }
    0x0002481e cmp r2, 0                                                                             |         
                                                                                                     |         if (r2 != 0) {
    0x00024820 bne 0x24898                                                                           |             goto label_8;
                                                                                                     |         }
    0x00024822 cmp r5, 0xf                                                                           |         
    0x00024824 str r5, [sp, 8]                                                                       |         var_8h = r5;
                                                                                                     |         if (r5 > 0xf) {
    0x00024826 bhi 0x24832                                                                           |             goto label_9;
                                                                                                     |         }
    0x00024828 cmp r5, 1                                                                             |         
    0x0002482a beq 0x247e2                                                                           |         
                                                                                                     |     }
    0x0002482c cmp r5, 0                                                                             |     
                                                                                                     |     if (r5 == 0) {
    0x0002482e beq 0x247e8                                                                           |         goto label_0;
                                                                                                     |     }
    0x00024830 b 0x24844                                                                             |     goto label_10;
                                                                                                     | label_9:
    0x00024832 ldr r1, [sp]                                                                          |     r1 = *(sp);
    0x00024834 mov r0, sb                                                                            |     r0 = sb;
    0x00024836 blx 0xed18                                                                            |     fcn_0000ed18 ();
    0x0002483a ldr r3, [sp, 8]                                                                       |     r3 = var_8h;
    0x0002483c str r0, [r4, -0x18]                                                                   |     *((r4 - 0x18)) = r0;
    0x00024840 str r3, [r4, -0x10]                                                                   |     *((r4 - 0x10)) = r3;
                                                                                                     | label_10:
    0x00024844 mov r2, r5                                                                            |     r2 = r5;
    0x00024846 mov r1, r7                                                                            |     r1 = r7;
    0x00024848 blx 0xebf8                                                                            |     fcn_0000ebf8 ();
    0x0002484c ldr r5, [sp, 8]                                                                       |     r5 = var_8h;
    0x0002484e ldr r0, [r4, -0x18]                                                                   |     r0 = *((r4 - 0x18));
    0x00024852 b 0x247e8                                                                             |     goto label_0;
                                                                                                     | label_6:
    0x00024854 ldr.w fp, [sp, 4]                                                                     |     fp = var_4h;
                                                                                                     | label_7:
    0x00024858 movs r3, 0                                                                            |     r3 = 0;
    0x0002485a mov r0, r8                                                                            |     r0 = r8;
    0x0002485c str.w fp, [r8, 4]                                                                     |     __asm ("str.w fp, [r8, 4]");
    0x00024860 strd r3, r3, [r8, 0xc]                                                                |     __asm ("strd r3, r3, [r8, 0xc]");
    0x00024864 str.w r3, [r8, 0x14]                                                                  |     __asm ("str.w r3, [r8, 0x14]");
    0x00024868 blx 0xeaac                                                                            |     fcn_0000eaac ();
    0x0002486c ldr r2, [pc, 0x74]                                                                    |     
    0x0002486e ldr r3, [pc, 0x70]                                                                    |     r3 = *(0x248e2);
    0x00024870 add r2, pc                                                                            |     r2 = 0x49158;
    0x00024872 ldr r3, [r2, r3]                                                                      |     r3 = *(0x49158);
    0x00024874 ldr r2, [r3]                                                                          |     r2 = *(0x49158);
    0x00024876 ldr r3, [sp, 0xc]                                                                     |     r3 = var_ch;
    0x00024878 eors r2, r3                                                                           |     r2 ^= r3;
    0x0002487a mov.w r3, 0                                                                           |     r3 = 0;
                                                                                                     |     if (r2 == r3) {
    0x0002487e bne 0x248a0                                                                           |         
    0x00024880 mov r0, r8                                                                            |         r0 = r8;
    0x00024882 add sp, 0x14                                                                          |         
    0x00024884 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                            |         
                                                                                                     | label_4:
    0x00024888 str r4, [sp, 4]                                                                       |         var_4h = r4;
    0x0002488a b 0x247c4                                                                             |         goto label_1;
                                                                                                     | label_5:
    0x0002488c cmp r4, 0                                                                             |         
                                                                                                     |         if (r4 < 0) {
    0x0002488e bge 0x24894                                                                           |             
    0x00024890 blx 0xe8c0                                                                            |             fcn_0000e8c0 ();
                                                                                                     |         }
    0x00024894 blx 0xe6bc                                                                            |         fcn_0000e6bc ();
                                                                                                     | label_8:
    0x00024898 ldr r0, [pc, 0x4c]                                                                    |         
    0x0002489a add r0, pc                                                                            |         r0 = 0x49186;
    0x0002489c blx 0xe86c                                                                            |         fcn_0000e86c ();
                                                                                                     |     }
    0x000248a0 blx 0xea48                                                                            |     fcn_0000ea48 ();
    0x000248a4 blx 0xe71c                                                                            |     fcn_0000e71c ();
    0x000248a8 ldr r0, [sp, 4]                                                                       |     r0 = var_4h;
    0x000248aa mov r1, sb                                                                            |     r1 = sb;
    0x000248ac bl 0x24c14                                                                            |     r0 = fcn_00024c14 (r0, r1);
    0x000248b0 blx 0xebdc                                                                            |     malloc (r0);
    0x000248b4 ldr.w r0, [r8, 0xc]                                                                   |     r0 = *((r8 + 0xc));
                                                                                                     |     if (r0 != 0) {
    0x000248b8 cbnz r0, 0x248d6                                                                      |         goto label_11;
                                                                                                     |     }
                                                                                                     | label_3:
    0x000248ba mov r0, r8                                                                            |     r0 = r8;
    0x000248bc bl 0x24a54                                                                            |     r0 = fcn_00024a54 (r0);
                                                                                                     |     do {
                                                                                                     | label_2:
    0x000248c0 blx 0xea54                                                                            |         fcn_0000ea54 ();
    0x000248c4 blx 0xec7c                                                                            |         fcn_0000ec7c ();
    0x000248c8 ldr.w r0, [r8]                                                                        |         r0 = *(r8);
    0x000248cc cmp r0, 0                                                                             |         
    0x000248ce beq 0x248c0                                                                           |         
                                                                                                     |     } while (r0 == 0);
    0x000248d0 blx 0xe9a4                                                                            |     fcn_0000e9a4 ();
    0x000248d4 b 0x248c0                                                                             |     goto label_2;
                                                                                                     | label_11:
    0x000248d6 blx 0xe9a4                                                                            |     fcn_0000e9a4 ();
    0x000248da b 0x248ba                                                                             |     goto label_3;
                                                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x257e8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) method.mqtt::token.get_subscribe_response___const ()     | void method_mqtt::token_get_subscribe_response_const (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     /* mqtt::token::get_subscribe_response() const */
    0x000257e8 push.w {r4, r5, r6, r7, r8, sb, sl, lr}               |     
    0x000257ec mov r4, r1                                            |     r4 = r1;
    0x000257ee ldr r3, [r1, 0x50]                                    |     r3 = *((r1 + 0x50));
    0x000257f0 sub sp, 0x30                                          |     
    0x000257f2 ldr r1, [pc, 0x1e4]                                   |     
    0x000257f4 ldr r2, [pc, 0x1e4]                                   |     r2 = *(0x259dc);
    0x000257f6 cmp r3, 1                                             |     
    0x000257f8 ldr.w sb, [pc, 0x1e4]                                 |     
    0x000257fc add r1, pc                                            |     r1 = 0x4b1da;
    0x000257fe ldr r2, [r1, r2]                                      |     
    0x00025800 add sb, pc                                            |     sb = 0x4b1e4;
    0x00025802 ldr r2, [r2]                                          |     r2 = *(0x4b1da);
    0x00025804 str r2, [sp, 0x2c]                                    |     var_2ch = r2;
    0x00025806 mov.w r2, 0                                           |     r2 = 0;
                                                                     |     if (r3 != 1) {
    0x0002580a bne.w 0x2591c                                         |         goto label_1;
                                                                     |     }
    0x0002580e movs r3, 0                                            |     r3 = 0;
    0x00025810 mov r5, r0                                            |     r5 = r0;
    0x00025812 strb.w r3, [sp, 0x10]                                 |     var_10h = r3;
    0x00025816 adds r0, r4, 4                                        |     r0 = r4 + 4;
    0x00025818 ldr r3, [pc, 0x1c8]                                   |     r3 = *(0x259e4);
    0x0002581a str r0, [sp, 0xc]                                     |     var_ch = r0;
    0x0002581c ldr.w r6, [sb, r3]                                    |     r6 = *((sb + r3));
                                                                     |     if (r6 != 0) {
    0x00025820 cbz r6, 0x2582a                                       |         
    0x00025822 blx 0xe5f8                                            |         r0 = fcn_0000e5f8 ();
    0x00025826 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x00025828 bne 0x25914                                           |             goto label_2;
                                                                     |         }
                                                                     |     }
    0x0002582a movs r3, 1                                            |     r3 = 1;
    0x0002582c add.w r7, r4, 0x20                                    |     r7 = r4 + 0x20;
    0x00025830 strb.w r3, [sp, 0x10]                                 |     var_10h = r3;
    0x00025834 ldrb.w r3, [r4, 0x90]                                 |     r3 = *((r4 + 0x90));
                                                                     |     if (r3 != 0) {
    0x00025838 cbnz r3, 0x2584e                                      |         goto label_3;
                                                                     |     }
    0x0002583a add.w r8, sp, 0xc                                     |     r8 += var_ch;
                                                                     |     do {
    0x0002583e mov r1, r8                                            |         r1 = r8;
    0x00025840 mov r0, r7                                            |         r0 = r7;
    0x00025842 blx 0xec58                                            |         fcn_0000ec58 ();
    0x00025846 ldrb.w r3, [r4, 0x90]                                 |         r3 = *((r4 + 0x90));
    0x0002584a cmp r3, 0                                             |         
    0x0002584c beq 0x2583e                                           |         
                                                                     |     } while (r3 == 0);
                                                                     | label_3:
    0x0002584e ldr r3, [r4, 0x58]                                    |     r3 = *((r4 + 0x58));
    0x00025850 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x00025852 bne.w 0x25976                                         |         goto label_4;
                                                                     |     }
    0x00025856 ldr r3, [r4, 0x5c]                                    |     r3 = *((r4 + 0x5c));
    0x00025858 cmp r3, 2                                             |     
                                                                     |     if (r3 > 2) {
    0x0002585a bgt.w 0x25976                                         |         goto label_4;
                                                                     |     }
    0x0002585e ldr.w r7, [r4, 0x98]                                  |     r7 = *((r4 + 0x98));
    0x00025862 cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x00025864 beq 0x2593c                                           |         goto label_5;
                                                                     |     }
    0x00025866 ldr r3, [pc, 0x180]                                   |     r3 = *(0x259ea);
    0x00025868 mov sl, r5                                            |     sl = r5;
    0x0002586a adds r1, r7, 4                                        |     r1 = r7 + 4;
    0x0002586c ldr.w r3, [sb, r3]                                    |     r3 = *((sb + r3));
    0x00025870 str r3, [sp, 4]                                       |     var_4h = r3;
    0x00025872 adds r3, 8                                            |     r3 += 8;
    0x00025874 str r3, [sl], 4                                       |     *(sl) = r3;
                                                                     |     sl += 4;
    0x00025878 mov r0, sl                                            |     r0 = sl;
    0x0002587a blx 0xeb24                                            |     fcn_0000eb24 ();
    0x0002587e ldr r3, [pc, 0x16c]                                   |     r3 = *(0x259ee);
    0x00025880 ldrd r2, r4, [r7, 0x14]                               |     __asm ("ldrd r2, r4, [r7, 0x14]");
    0x00025884 ldr.w r3, [sb, r3]                                    |     r3 = *((sb + r3));
    0x00025888 subs r4, r4, r2                                       |     r4 -= r2;
    0x0002588a add.w r3, r3, 8                                       |     r3 += 8;
    0x0002588e str r3, [r5]                                          |     *(r5) = r3;
    0x00025890 mov.w r3, 0                                           |     r3 = 0;
    0x00025894 strd r3, r3, [r5, 0x14]                               |     __asm ("strd r3, r3, [r5, 0x14]");
    0x00025898 str r3, [r5, 0x1c]                                    |     *((r5 + 0x1c)) = r3;
                                                                     |     if (r4 == r4) {
    0x0002589a beq 0x258f4                                           |         goto label_6;
                                                                     |     }
    0x0002589c movw r3, 0xfffc                                       |     
    0x000258a0 movt r3, 0x7fff                                       |     r3 = 0x7ffffffc;
    0x000258a4 cmp r4, r3                                            |     
                                                                     |     if (r4 > r3) {
    0x000258a6 bhi 0x25908                                           |         goto label_7;
                                                                     |     }
    0x000258a8 mov r0, r4                                            |     r0 = r4;
    0x000258aa blx 0xe5ec                                            |     r0 = fcn_0000e5ec ();
    0x000258ae mov r3, r0                                            |     r3 = r0;
                                                                     |     do {
    0x000258b0 add r4, r3                                            |         r4 += r3;
    0x000258b2 strd r3, r3, [r5, 0x14]                               |         __asm ("strd r3, r3, [r5, 0x14]");
    0x000258b6 str r4, [r5, 0x1c]                                    |         *((r5 + 0x1c)) = r4;
    0x000258b8 ldrd r1, r0, [r7, 0x14]                               |         __asm ("ldrd r1, r0, [r7, 0x14]");
    0x000258bc cmp r1, r0                                            |         
    0x000258be sub.w r4, r0, r1                                      |         r4 = r0 - r1;
                                                                     |         if (r1 != r0) {
    0x000258c2 beq 0x258ce                                           |             
    0x000258c4 mov r0, r3                                            |             r0 = r3;
    0x000258c6 mov r2, r4                                            |             r2 = r4;
    0x000258c8 blx 0xe930                                            |             r0 = sym ();
    0x000258cc mov r3, r0                                            |             r3 = r0;
                                                                     |         }
    0x000258ce ldrb.w r1, [sp, 0x10]                                 |         r1 = var_10h;
    0x000258d2 add r3, r4                                            |         r3 += r4;
    0x000258d4 str r3, [r5, 0x18]                                    |         *((r5 + 0x18)) = r3;
                                                                     |         if (r1 != 0) {
    0x000258d6 cbnz r1, 0x258f8                                      |             goto label_8;
                                                                     |         }
                                                                     | label_0:
    0x000258d8 ldr r2, [pc, 0x114]                                   |         
    0x000258da ldr r3, [pc, 0x100]                                   |         r3 = *(0x259de);
    0x000258dc add r2, pc                                            |         r2 = 0x4b2d0;
    0x000258de ldr r3, [r2, r3]                                      |         r3 = *(0x4b2d0);
    0x000258e0 ldr r2, [r3]                                          |         r2 = *(0x4b2d0);
    0x000258e2 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x000258e4 eors r2, r3                                           |         r2 ^= r3;
    0x000258e6 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x000258ea bne 0x25918                                           |             goto label_9;
                                                                     |         }
    0x000258ec mov r0, r5                                            |         r0 = r5;
    0x000258ee add sp, 0x30                                          |         
    0x000258f0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}                |         
                                                                     | label_6:
    0x000258f4 mov r3, r4                                            |         r3 = r4;
    0x000258f6 b 0x258b0                                             |         
                                                                     |     } while (1);
                                                                     | label_8:
    0x000258f8 ldr r0, [sp, 0xc]                                     |     r0 = var_ch;
    0x000258fa cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x000258fc beq 0x258d8                                           |         goto label_0;
                                                                     |     }
    0x000258fe cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x00025900 beq 0x258d8                                           |         goto label_0;
                                                                     |     }
    0x00025902 blx 0xeea4                                            |     fcn_0000eea4 ();
    0x00025906 b 0x258d8                                             |     goto label_0;
                                                                     | label_7:
    0x00025908 cmp r4, 0                                             |     
                                                                     |     if (r4 < 0) {
    0x0002590a bge 0x25910                                           |         
    0x0002590c blx 0xe8c0                                            |         fcn_0000e8c0 ();
                                                                     |     }
    0x00025910 blx 0xe6bc                                            |     fcn_0000e6bc ();
                                                                     | label_2:
    0x00025914 blx 0xe830                                            |     fcn_0000e830 ();
                                                                     | label_9:
    0x00025918 blx 0xea48                                            |     fcn_0000ea48 ();
                                                                     | label_1:
    0x0002591c movs r0, 4                                            |     r0 = 4;
    0x0002591e blx 0xe764                                            |     fcn_0000e764 ();
    0x00025922 ldr r3, [pc, 0xd0]                                    |     r3 = *(0x259f6);
    0x00025924 ldr r2, [pc, 0xd0]                                    |     r2 = *(0x259f8);
    0x00025926 ldr.w r3, [sb, r3]                                    |     r3 = *((sb + r3));
    0x0002592a adds r3, 8                                            |     r3 += 8;
    0x0002592c str r3, [r0]                                          |     *(r0) = r3;
    0x0002592e ldr r3, [pc, 0xcc]                                    |     r3 = *(0x259fe);
    0x00025930 ldr.w r2, [sb, r2]                                    |     r2 = *((sb + r2));
    0x00025934 ldr.w r1, [sb, r3]                                    |     r1 = *((sb + r3));
    0x00025938 blx 0xed0c                                            |     fcn_0000ed0c ();
                                                                     | label_5:
    0x0002593c movs r0, 0x28                                         |     r0 = 0x28;
    0x0002593e add r5, sp, 0x14                                      |     r5 += var_14h;
    0x00025940 blx 0xe764                                            |     fcn_0000e764 ();
    0x00025944 ldr r1, [pc, 0xb8]                                    |     
    0x00025946 mov r4, r0                                            |     r4 = r0;
    0x00025948 mov r0, r5                                            |     r0 = r5;
    0x0002594a add r1, pc                                            |     r1 = 0x4b34e;
    0x0002594c bl 0x24eac                                            |     fcn_00024eac (r0, r1);
    0x00025950 mov r1, r5                                            |     r1 = r5;
    0x00025952 mov r0, r4                                            |     r0 = r4;
    0x00025954 bl 0x2669c                                            |     fcn_0002669c (r0, r1);
    0x00025958 ldr r0, [sp, 0x14]                                    |     r0 = var_14h;
    0x0002595a add r3, sp, 0x1c                                      |     r3 += var_1ch;
    0x0002595c cmp r0, r3                                            |     
                                                                     |     if (r0 != r3) {
    0x0002595e beq 0x25964                                           |         
    0x00025960 blx 0xe9a4                                            |         fcn_0000e9a4 ();
                                                                     |     }
    0x00025964 ldr r2, [pc, 0x9c]                                    |     r2 = *(0x25a04);
    0x00025966 mov r0, r4                                            |     r0 = r4;
    0x00025968 ldr r3, [pc, 0x9c]                                    |     r3 = *(0x25a08);
    0x0002596a ldr.w r2, [sb, r2]                                    |     r2 = *((sb + r2));
    0x0002596e ldr.w r1, [sb, r3]                                    |     r1 = *((sb + r3));
    0x00025972 blx 0xed0c                                            |     fcn_0000ed0c ();
                                                                     | label_4:
    0x00025976 movs r0, 0x28                                         |     r0 = 0x28;
    0x00025978 blx 0xe764                                            |     fcn_0000e764 ();
    0x0002597c ldrd r1, r2, [r4, 0x58]                               |     __asm ("ldrd r1, r2, [r4, 0x58]");
    0x00025980 add.w r3, r4, 0x60                                    |     r3 = r4 + 0x60;
    0x00025984 mov r5, r0                                            |     r5 = r0;
    0x00025986 bl 0x1796c                                            |     fcn_0001796c (r0, r1, r2, r3);
    0x0002598a ldr r2, [pc, 0x80]                                    |     r2 = *(0x25a0e);
    0x0002598c mov r0, r5                                            |     r0 = r5;
    0x0002598e ldr r3, [pc, 0x80]                                    |     r3 = *(0x25a12);
    0x00025990 ldr.w r2, [sb, r2]                                    |     r2 = *((sb + r2));
    0x00025994 ldr.w r1, [sb, r3]                                    |     r1 = *((sb + r3));
    0x00025998 blx 0xed0c                                            |     fcn_0000ed0c ();
    0x0002599c mov r0, r5                                            |     r0 = r5;
    0x0002599e blx 0xe878                                            |     fcn_0000e878 ();
                                                                     |     do {
    0x000259a2 ldrb.w r3, [sp, 0x10]                                 |         r3 = var_10h;
                                                                     |         if (r3 != 0) {
    0x000259a6 cbz r3, 0x259ae                                       |             
    0x000259a8 add r0, sp, 0xc                                       |             r0 += var_ch;
    0x000259aa bl 0x1857c                                            |             r0 = fcn_0001857c (r0);
                                                                     |         }
    0x000259ae blx 0xea54                                            |         fcn_0000ea54 ();
    0x000259b2 ldr r0, [sp, 0x14]                                    |         r0 = var_14h;
    0x000259b4 add r3, sp, 0x1c                                      |         r3 += var_1ch;
    0x000259b6 cmp r0, r3                                            |         
                                                                     |         if (r0 != r3) {
    0x000259b8 beq 0x259be                                           |             
    0x000259ba blx 0xe9a4                                            |             fcn_0000e9a4 ();
                                                                     |         }
    0x000259be mov r0, r4                                            |         r0 = r4;
    0x000259c0 blx 0xe878                                            |         fcn_0000e878 ();
    0x000259c4 b 0x259a2                                             |         
                                                                     |     } while (1);
                                                                     | }
    ; assembly                                                                                                                           | /* r2dec pseudo code output */
                                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x24f48 */
                                                                                                                                         | #include <stdint.h>
                                                                                                                                         |  
    ; (fcn) method.mqtt::token.token_mqtt::token::Type__mqtt::iasync_client__std::shared_ptr_mqtt::string_collection_const__ ()          | void method_mqtt::token_token_mqtt::token::Type_mqtt::iasync_client_std::shared_ptr_mqtt::string_collection_const_ (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                         |     r0 = arg1;
                                                                                                                                         |     r1 = arg2;
                                                                                                                                         |     r2 = arg3;
                                                                                                                                         |     r3 = arg4;
                                                                                                                                         |     /* mqtt::token::token(mqtt::token::Type, mqtt::iasync_client&, std::shared_ptr<qtt::string_collection const>) */
    0x00024f48 push.w {r3, r4, r5, r6, r7, r8, sb, lr}                                                                                   |     
    0x00024f4c mov r6, r3                                                                                                                |     r6 = r3;
    0x00024f4e ldr.w r8, [pc, 0x98]                                                                                                      |     
    0x00024f52 mov r4, r0                                                                                                                |     r4 = r0;
    0x00024f54 movs r5, 0                                                                                                                |     r5 = 0;
    0x00024f56 mov r7, r2                                                                                                                |     r7 = r2;
    0x00024f58 ldr r3, [pc, 0x90]                                                                                                        |     r3 = *(0x24fec);
    0x00024f5a mov sb, r1                                                                                                                |     sb = r1;
    0x00024f5c add r8, pc                                                                                                                |     r8 = 0x49f4a;
    0x00024f5e ldr.w r3, [r8, r3]                                                                                                        |     r3 = *(0x49f4a);
    0x00024f62 adds r3, 8                                                                                                                |     r3 += 8;
    0x00024f64 str r3, [r0], 4                                                                                                           |     *(r0) = r3;
                                                                                                                                         |     r0 += 4;
    0x00024f68 str r5, [r4, 4]                                                                                                           |     *((r4 + 4)) = r5;
    0x00024f6a strd r5, r5, [r0, 4]                                                                                                      |     __asm ("strd r5, r5, [r0, 4]");
    0x00024f6e strd r5, r5, [r0, 0xc]                                                                                                    |     __asm ("strd r5, r5, [r0, 0xc]");
    0x00024f72 str r5, [r0, 0x14]                                                                                                        |     *((r0 + 0x14)) = r5;
    0x00024f74 add.w r0, r4, 0x20                                                                                                        |     r0 = r4 + 0x20;
    0x00024f78 blx 0xeb88                                                                                                                |     MQTTAsync_subscribeMany ();
    0x00024f7c add.w r3, r4, 0x68                                                                                                        |     r3 = r4 + 0x68;
    0x00024f80 strb.w r5, [r4, 0x68]                                                                                                     |     *((r4 + 0x68)) = r5;
    0x00024f84 str r3, [r4, 0x60]                                                                                                        |     *((r4 + 0x60)) = r3;
    0x00024f86 ldrd r2, r3, [r6]                                                                                                         |     __asm ("ldrd r2, r3, [r6]");
    0x00024f8a str.w sb, [r4, 0x50]                                                                                                      |     __asm ("str.w sb, [r4, 0x50]");
    0x00024f8e str r7, [r4, 0x54]                                                                                                        |     *((r4 + 0x54)) = r7;
    0x00024f90 strd r5, r5, [r4, 0x58]                                                                                                   |     __asm ("strd r5, r5, [r4, 0x58]");
    0x00024f94 str r5, [r4, 0x64]                                                                                                        |     *((r4 + 0x64)) = r5;
    0x00024f96 strd r5, r2, [r4, 0x78]                                                                                                   |     __asm ("strd r5, r2, [r4, 0x78]");
    0x00024f9a str.w r3, [r4, 0x80]                                                                                                      |     __asm ("str.w r3, [r4, 0x80]");
                                                                                                                                         |     if (r3 != 0) {
    0x00024f9e cbz r3, 0x24fb0                                                                                                           |         
    0x00024fa0 ldr r2, [pc, 0x4c]                                                                                                        |         r2 = *(0x24ff0);
    0x00024fa2 ldr.w r2, [r8, r2]                                                                                                        |         r2 = *((r8 + r2));
    0x00024fa6 ldrb r2, [r2]                                                                                                             |         r2 = *(r2);
                                                                                                                                         |         if (r2 == 0) {
    0x00024fa8 cbz r2, 0x24fcc                                                                                                           |             goto label_1;
                                                                                                                                         |         }
    0x00024faa ldr r2, [r3, 4]                                                                                                           |         r2 = *((r3 + 4));
    0x00024fac adds r2, 1                                                                                                                |         r2++;
    0x00024fae str r2, [r3, 4]                                                                                                           |         *((r3 + 4)) = r2;
                                                                                                                                         |     }
                                                                                                                                         | label_0:
    0x00024fb0 movs r3, 0                                                                                                                |     r3 = 0;
    0x00024fb2 mov r0, r4                                                                                                                |     r0 = r4;
    0x00024fb4 strd r3, r3, [r4, 0x84]                                                                                                   |     __asm ("strd r3, r3, [r4, 0x84]");
    0x00024fb8 str.w r3, [r4, 0x8c]                                                                                                      |     __asm ("str.w r3, [r4, 0x8c]");
    0x00024fbc strb.w r3, [r4, 0x90]                                                                                                     |     *((r4 + 0x90)) = r3;
    0x00024fc0 strd r3, r3, [r4, 0x94]                                                                                                   |     __asm ("strd r3, r3, [r4, 0x94]");
    0x00024fc4 str.w r3, [r4, 0x9c]                                                                                                      |     __asm ("str.w r3, [r4, 0x9c]");
    0x00024fc8 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                                                                    |     
                                                                                                                                         | label_1:
    0x00024fcc adds r3, 4                                                                                                                |     r3 += 4;
    0x00024fce dmb ish                                                                                                                   |     __asm ("dmb ish");
                                                                                                                                         |     do {
    0x00024fd2 ldrex r1, [r3]                                                                                                            |         __asm ("ldrex r1, [r3]");
    0x00024fd6 adds r1, 1                                                                                                                |         r1++;
    0x00024fd8 strex r2, r1, [r3]                                                                                                        |         __asm ("strex r2, r1, [r3]");
    0x00024fdc cmp r2, 0                                                                                                                 |         
    0x00024fde bne 0x24fd2                                                                                                               |         
                                                                                                                                         |     } while (r2 != 0);
    0x00024fe0 dmb ish                                                                                                                   |     __asm ("dmb ish");
    0x00024fe4 b 0x24fb0                                                                                                                 |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x24ff4 */
                                                                                                                                                                     | #include <stdint.h>
                                                                                                                                                                     |  
    ; (fcn) method.mqtt::token.token_mqtt::token::Type__mqtt::iasync_client__std::shared_ptr_mqtt::string_collection_const___void__mqtt::iaction_listener_ ()        | void method_mqtt::token_token_mqtt::token::Type_mqtt::iasync_client_std::shared_ptr_mqtt::string_collection_const_void_mqtt::iaction_listener_ (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                     |     r0 = arg1;
                                                                                                                                                                     |     r1 = arg2;
                                                                                                                                                                     |     r2 = arg3;
                                                                                                                                                                     |     r3 = arg4;
                                                                                                                                                                     |     /* mqtt::token::token(mqtt::token::Type, mqtt::iasync_client&, std::shared_ptr<qtt::string_collection const>, void*, mqtt::iaction_listener&) */
    0x00024ff4 push.w {r3, r4, r5, r6, r7, r8, sb, lr}                                                                                                               |     
    0x00024ff8 mov r6, r3                                                                                                                                            |     r6 = r3;
    0x00024ffa ldr.w sb, [pc, 0x98]                                                                                                                                  |     
    0x00024ffe mov r4, r0                                                                                                                                            |     r4 = r0;
    0x00025000 movs r5, 0                                                                                                                                            |     r5 = 0;
    0x00025002 mov r7, r2                                                                                                                                            |     r7 = r2;
    0x00025004 ldr r3, [pc, 0x90]                                                                                                                                    |     r3 = *(0x25098);
    0x00025006 mov r8, r1                                                                                                                                            |     r8 = r1;
    0x00025008 add sb, pc                                                                                                                                            |     sb = 0x4a0a2;
    0x0002500a ldr.w r3, [sb, r3]                                                                                                                                    |     r3 = *(0x4a0a2);
    0x0002500e adds r3, 8                                                                                                                                            |     r3 += 8;
    0x00025010 str r3, [r0], 4                                                                                                                                       |     *(r0) = r3;
                                                                                                                                                                     |     r0 += 4;
    0x00025014 str r5, [r4, 4]                                                                                                                                       |     *((r4 + 4)) = r5;
    0x00025016 strd r5, r5, [r0, 4]                                                                                                                                  |     __asm ("strd r5, r5, [r0, 4]");
    0x0002501a strd r5, r5, [r0, 0xc]                                                                                                                                |     __asm ("strd r5, r5, [r0, 0xc]");
    0x0002501e str r5, [r0, 0x14]                                                                                                                                    |     *((r0 + 0x14)) = r5;
    0x00025020 add.w r0, r4, 0x20                                                                                                                                    |     r0 = r4 + 0x20;
    0x00025024 blx 0xeb88                                                                                                                                            |     MQTTAsync_subscribeMany ();
    0x00025028 strb.w r5, [r4, 0x68]                                                                                                                                 |     *((r4 + 0x68)) = r5;
    0x0002502c ldrd r2, r3, [r6]                                                                                                                                     |     __asm ("ldrd r2, r3, [r6]");
    0x00025030 strd r8, r7, [r4, 0x50]                                                                                                                               |     __asm ("strd r8, r7, [r4, 0x50]");
    0x00025034 strd r5, r5, [r4, 0x58]                                                                                                                               |     __asm ("strd r5, r5, [r4, 0x58]");
    0x00025038 strd r2, r3, [r4, 0x7c]                                                                                                                               |     __asm ("strd r2, r3, [r4, 0x7c]");
    0x0002503c add.w r2, r4, 0x68                                                                                                                                    |     r2 = r4 + 0x68;
    0x00025040 str r5, [r4, 0x64]                                                                                                                                    |     *((r4 + 0x64)) = r5;
    0x00025042 str r5, [r4, 0x78]                                                                                                                                    |     *((r4 + 0x78)) = r5;
    0x00025044 str r2, [r4, 0x60]                                                                                                                                    |     *((r4 + 0x60)) = r2;
                                                                                                                                                                     |     if (r3 != 0) {
    0x00025046 cbz r3, 0x25058                                                                                                                                       |         
    0x00025048 ldr r2, [pc, 0x50]                                                                                                                                    |         r2 = *(0x2509c);
    0x0002504a ldr.w r2, [sb, r2]                                                                                                                                    |         r2 = *((sb + r2));
    0x0002504e ldrb r2, [r2]                                                                                                                                         |         r2 = *(r2);
                                                                                                                                                                     |         if (r2 == 0) {
    0x00025050 cbz r2, 0x25078                                                                                                                                       |             goto label_1;
                                                                                                                                                                     |         }
    0x00025052 ldr r2, [r3, 4]                                                                                                                                       |         r2 = *((r3 + 4));
    0x00025054 adds r2, 1                                                                                                                                            |         r2++;
    0x00025056 str r2, [r3, 4]                                                                                                                                       |         *((r3 + 4)) = r2;
                                                                                                                                                                     |     }
                                                                                                                                                                     | label_0:
    0x00025058 ldr r2, [sp, 0x20]                                                                                                                                    |     r2 = *(arg_20h);
    0x0002505a movs r3, 0                                                                                                                                            |     r3 = 0;
    0x0002505c mov r0, r4                                                                                                                                            |     r0 = r4;
    0x0002505e strb.w r3, [r4, 0x90]                                                                                                                                 |     *((r4 + 0x90)) = r3;
    0x00025062 strd r3, r3, [r4, 0x94]                                                                                                                               |     __asm ("strd r3, r3, [r4, 0x94]");
    0x00025066 str.w r2, [r4, 0x84]                                                                                                                                  |     __asm ("str.w r2, [r4, 0x84]");
    0x0002506a ldr r2, [sp, 0x24]                                                                                                                                    |     r2 = *(arg_24h);
    0x0002506c str.w r3, [r4, 0x9c]                                                                                                                                  |     __asm ("str.w r3, [r4, 0x9c]");
    0x00025070 strd r2, r3, [r4, 0x88]                                                                                                                               |     __asm ("strd r2, r3, [r4, 0x88]");
    0x00025074 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                                                                                                |     
                                                                                                                                                                     | label_1:
    0x00025078 adds r3, 4                                                                                                                                            |     r3 += 4;
    0x0002507a dmb ish                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                     |     do {
    0x0002507e ldrex r1, [r3]                                                                                                                                        |         __asm ("ldrex r1, [r3]");
    0x00025082 adds r1, 1                                                                                                                                            |         r1++;
    0x00025084 strex r2, r1, [r3]                                                                                                                                    |         __asm ("strex r2, r1, [r3]");
    0x00025088 cmp r2, 0                                                                                                                                             |         
    0x0002508a bne 0x2507e                                                                                                                                           |         
                                                                                                                                                                     |     } while (r2 != 0);
    0x0002508c dmb ish                                                                                                                                               |     __asm ("dmb ish");
    0x00025090 b 0x25058                                                                                                                                             |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x24ff4 */
                                                                                                                                                                     | #include <stdint.h>
                                                                                                                                                                     |  
    ; (fcn) method.mqtt::token.token_mqtt::token::Type__mqtt::iasync_client__std::shared_ptr_mqtt::string_collection_const___void__mqtt::iaction_listener_ ()        | void method_mqtt::token_token_mqtt::token::Type_mqtt::iasync_client_std::shared_ptr_mqtt::string_collection_const_void_mqtt::iaction_listener_ (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                     |     r0 = arg1;
                                                                                                                                                                     |     r1 = arg2;
                                                                                                                                                                     |     r2 = arg3;
                                                                                                                                                                     |     r3 = arg4;
                                                                                                                                                                     |     /* mqtt::token::token(mqtt::token::Type, mqtt::iasync_client&, std::shared_ptr<qtt::string_collection const>, void*, mqtt::iaction_listener&) */
    0x00024ff4 push.w {r3, r4, r5, r6, r7, r8, sb, lr}                                                                                                               |     
    0x00024ff8 mov r6, r3                                                                                                                                            |     r6 = r3;
    0x00024ffa ldr.w sb, [pc, 0x98]                                                                                                                                  |     
    0x00024ffe mov r4, r0                                                                                                                                            |     r4 = r0;
    0x00025000 movs r5, 0                                                                                                                                            |     r5 = 0;
    0x00025002 mov r7, r2                                                                                                                                            |     r7 = r2;
    0x00025004 ldr r3, [pc, 0x90]                                                                                                                                    |     r3 = *(0x25098);
    0x00025006 mov r8, r1                                                                                                                                            |     r8 = r1;
    0x00025008 add sb, pc                                                                                                                                            |     sb = 0x4a0a2;
    0x0002500a ldr.w r3, [sb, r3]                                                                                                                                    |     r3 = *(0x4a0a2);
    0x0002500e adds r3, 8                                                                                                                                            |     r3 += 8;
    0x00025010 str r3, [r0], 4                                                                                                                                       |     *(r0) = r3;
                                                                                                                                                                     |     r0 += 4;
    0x00025014 str r5, [r4, 4]                                                                                                                                       |     *((r4 + 4)) = r5;
    0x00025016 strd r5, r5, [r0, 4]                                                                                                                                  |     __asm ("strd r5, r5, [r0, 4]");
    0x0002501a strd r5, r5, [r0, 0xc]                                                                                                                                |     __asm ("strd r5, r5, [r0, 0xc]");
    0x0002501e str r5, [r0, 0x14]                                                                                                                                    |     *((r0 + 0x14)) = r5;
    0x00025020 add.w r0, r4, 0x20                                                                                                                                    |     r0 = r4 + 0x20;
    0x00025024 blx 0xeb88                                                                                                                                            |     MQTTAsync_subscribeMany ();
    0x00025028 strb.w r5, [r4, 0x68]                                                                                                                                 |     *((r4 + 0x68)) = r5;
    0x0002502c ldrd r2, r3, [r6]                                                                                                                                     |     __asm ("ldrd r2, r3, [r6]");
    0x00025030 strd r8, r7, [r4, 0x50]                                                                                                                               |     __asm ("strd r8, r7, [r4, 0x50]");
    0x00025034 strd r5, r5, [r4, 0x58]                                                                                                                               |     __asm ("strd r5, r5, [r4, 0x58]");
    0x00025038 strd r2, r3, [r4, 0x7c]                                                                                                                               |     __asm ("strd r2, r3, [r4, 0x7c]");
    0x0002503c add.w r2, r4, 0x68                                                                                                                                    |     r2 = r4 + 0x68;
    0x00025040 str r5, [r4, 0x64]                                                                                                                                    |     *((r4 + 0x64)) = r5;
    0x00025042 str r5, [r4, 0x78]                                                                                                                                    |     *((r4 + 0x78)) = r5;
    0x00025044 str r2, [r4, 0x60]                                                                                                                                    |     *((r4 + 0x60)) = r2;
                                                                                                                                                                     |     if (r3 != 0) {
    0x00025046 cbz r3, 0x25058                                                                                                                                       |         
    0x00025048 ldr r2, [pc, 0x50]                                                                                                                                    |         r2 = *(0x2509c);
    0x0002504a ldr.w r2, [sb, r2]                                                                                                                                    |         r2 = *((sb + r2));
    0x0002504e ldrb r2, [r2]                                                                                                                                         |         r2 = *(r2);
                                                                                                                                                                     |         if (r2 == 0) {
    0x00025050 cbz r2, 0x25078                                                                                                                                       |             goto label_1;
                                                                                                                                                                     |         }
    0x00025052 ldr r2, [r3, 4]                                                                                                                                       |         r2 = *((r3 + 4));
    0x00025054 adds r2, 1                                                                                                                                            |         r2++;
    0x00025056 str r2, [r3, 4]                                                                                                                                       |         *((r3 + 4)) = r2;
                                                                                                                                                                     |     }
                                                                                                                                                                     | label_0:
    0x00025058 ldr r2, [sp, 0x20]                                                                                                                                    |     r2 = *(arg_20h);
    0x0002505a movs r3, 0                                                                                                                                            |     r3 = 0;
    0x0002505c mov r0, r4                                                                                                                                            |     r0 = r4;
    0x0002505e strb.w r3, [r4, 0x90]                                                                                                                                 |     *((r4 + 0x90)) = r3;
    0x00025062 strd r3, r3, [r4, 0x94]                                                                                                                               |     __asm ("strd r3, r3, [r4, 0x94]");
    0x00025066 str.w r2, [r4, 0x84]                                                                                                                                  |     __asm ("str.w r2, [r4, 0x84]");
    0x0002506a ldr r2, [sp, 0x24]                                                                                                                                    |     r2 = *(arg_24h);
    0x0002506c str.w r3, [r4, 0x9c]                                                                                                                                  |     __asm ("str.w r3, [r4, 0x9c]");
    0x00025070 strd r2, r3, [r4, 0x88]                                                                                                                               |     __asm ("strd r2, r3, [r4, 0x88]");
    0x00025074 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}                                                                                                                |     
                                                                                                                                                                     | label_1:
    0x00025078 adds r3, 4                                                                                                                                            |     r3 += 4;
    0x0002507a dmb ish                                                                                                                                               |     __asm ("dmb ish");
                                                                                                                                                                     |     do {
    0x0002507e ldrex r1, [r3]                                                                                                                                        |         __asm ("ldrex r1, [r3]");
    0x00025082 adds r1, 1                                                                                                                                            |         r1++;
    0x00025084 strex r2, r1, [r3]                                                                                                                                    |         __asm ("strex r2, r1, [r3]");
    0x00025088 cmp r2, 0                                                                                                                                             |         
    0x0002508a bne 0x2507e                                                                                                                                           |         
                                                                                                                                                                     |     } while (r2 != 0);
    0x0002508c dmb ish                                                                                                                                               |     __asm ("dmb ish");
    0x00025090 b 0x25058                                                                                                                                             |     goto label_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/libpaho-mqttpp3.so.1.2.0 @ 0x27a40 */
                                                                                     | #include <stdint.h>
                                                                                     |  
    ; (fcn) method.mqtt::will_options.operator_mqtt::will_options_const_ ()          | void method_mqtt::will_options_operator_mqtt::will_options_const_ (uint32_t arg1, int16_t arg2) {
                                                                                     |     int16_t var_0h;
                                                                                     |     int16_t var_14h;
                                                                                     |     int16_t var_18h;
                                                                                     |     int16_t var_1ch;
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
                                                                                     |     /* mqtt::will_options::operator=(mqtt::will_options const&) */
    0x00027a40 ldr r2, [pc, 0x1ec]                                                   |     
    0x00027a42 cmp r1, r0                                                            |     
    0x00027a44 ldr r3, [pc, 0x1ec]                                                   |     r3 = *(0x27c34);
    0x00027a46 push.w {r4, r5, r6, r7, r8, sb, lr}                                   |     
    0x00027a4a sub sp, 0x24                                                          |     
    0x00027a4c add r2, pc                                                            |     r2 = 0x4f680;
    0x00027a4e ldr r6, [pc, 0x1e8]                                                   |     
    0x00027a50 mov r5, r0                                                            |     r5 = r0;
    0x00027a52 ldr r3, [r2, r3]                                                      |     
    0x00027a54 add r6, pc                                                            |     r6 = 0x4f692;
    0x00027a56 ldr r3, [r3]                                                          |     r3 = *(0x4f680);
    0x00027a58 str r3, [sp, 0x1c]                                                    |     var_1ch = r3;
    0x00027a5a mov.w r3, 0                                                           |     r3 = 0;
                                                                                     |     if (r1 == r0) {
    0x00027a5e beq 0x27b1a                                                           |         goto label_8;
                                                                                     |     }
    0x00027a60 mov lr, r1                                                            |     lr = r1;
    0x00027a62 mov r4, r1                                                            |     r4 = r1;
    0x00027a64 mov ip, r0                                                            |     
    0x00027a66 ldm.w lr!, {r0, r1, r2, r3}                                           |     r0 = *(lr!);
                                                                                     |     r1 = *((lr! + 4));
                                                                                     |     r2 = *((lr! + 8));
                                                                                     |     r3 = *((lr! + 12));
    0x00027a6a stm.w ip!, {r0, r1, r2, r3}                                           |     *(ip!) = r0;
                                                                                     |     *((ip! + 4)) = r1;
                                                                                     |     *((ip! + 8)) = r2;
                                                                                     |     *((ip! + 12)) = r3;
    0x00027a6e ldm.w lr, {r0, r1, r2, r3}                                            |     r0 = *(lr);
                                                                                     |     r1 = *((lr + 4));
                                                                                     |     r2 = *((lr + 8));
                                                                                     |     r3 = *((lr + 12));
    0x00027a72 stm.w ip, {r0, r1, r2, r3}                                            |     *(ip) = r0;
                                                                                     |     *((ip + 4)) = r1;
                                                                                     |     *((ip + 8)) = r2;
                                                                                     |     *((ip + 12)) = r3;
    0x00027a76 ldrd r2, r3, [r4, 0x20]                                               |     __asm ("ldrd r2, r3, [r4, 0x20]");
    0x00027a7a strd r2, r3, [sp, 0x14]                                               |     __asm ("strd r2, r3, [var_18h]");
    0x00027a7c movs r3, 5                                                            |     r3 = 5;
                                                                                     |     if (r3 != 0) {
    0x00027a7e cbz r3, 0x27a92                                                       |         
    0x00027a80 ldr r2, [pc, 0x1b8]                                                   |         r2 = *(0x27c3c);
    0x00027a82 ldr r2, [r6, r2]                                                      |         r2 = *((r6 + r2));
    0x00027a84 ldrb r2, [r2]                                                         |         r2 = *(r2);
    0x00027a86 cmp r2, 0                                                             |         
                                                                                     |         if (r2 == 0) {
    0x00027a88 beq.w 0x27bcc                                                         |             goto label_9;
                                                                                     |         }
    0x00027a8c ldr r2, [r3, 4]                                                       |         r2 = *((r3 + 4));
    0x00027a8e adds r2, 1                                                            |         r2++;
    0x00027a90 str r2, [r3, 4]                                                       |         *((r3 + 4)) = r2;
                                                                                     |     }
                                                                                     | label_5:
    0x00027a92 add.w r8, sp, 0x14                                                    |     r8 += var_14h;
    0x00027a96 mov r0, r5                                                            |     r0 = r5;
    0x00027a98 mov r1, r8                                                            |     r1 = r8;
    0x00027a9a blx 0xe900                                                            |     fcn_0000e900 ();
    0x00027a9e ldr r7, [sp, 0x18]                                                    |     r7 = var_18h;
                                                                                     |     if (r7 == 0) {
    0x00027aa0 cbz r7, 0x27aba                                                       |         goto label_0;
                                                                                     |     }
    0x00027aa2 ldr r3, [pc, 0x198]                                                   |     r3 = *(0x27c3e);
    0x00027aa4 ldr.w sb, [r6, r3]                                                    |     sb = *((r6 + r3));
    0x00027aa8 ldrb.w r3, [sb]                                                       |     r3 = *(sb);
    0x00027aac cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x00027aae beq 0x27b98                                                           |         goto label_10;
                                                                                     |     }
    0x00027ab0 ldr r3, [r7, 4]                                                       |     r3 = *((r7 + 4));
    0x00027ab2 subs r2, r3, 1                                                        |     r2 = r3 - 1;
    0x00027ab4 str r2, [r7, 4]                                                       |     *((r7 + 4)) = r2;
                                                                                     | label_3:
    0x00027ab6 cmp r3, 1                                                             |     
    0x00027ab8 beq 0x27b36                                                           |     
                                                                                     |     while (r3 != 1) {
                                                                                     | label_0:
    0x00027aba ldr r3, [r4, 0x28]                                                    |         r3 = *((r4 + 0x28));
    0x00027abc str r3, [sp, 0x14]                                                    |         var_14h = r3;
    0x00027abe ldr r3, [r4, 0x2c]                                                    |         r3 = *((r4 + 0x2c));
    0x00027ac0 str r3, [sp, 0x18]                                                    |         var_18h = r3;
                                                                                     |         if (r3 != 0) {
    0x00027ac2 cbz r3, 0x27ad4                                                       |             
    0x00027ac4 ldr r2, [pc, 0x174]                                                   |             r2 = *(0x27c3c);
    0x00027ac6 ldr r2, [r6, r2]                                                      |             r2 = *((r6 + r2));
    0x00027ac8 ldrb r2, [r2]                                                         |             r2 = *(r2);
    0x00027aca cmp r2, 0                                                             |             
                                                                                     |             if (r2 == 0) {
    0x00027acc beq 0x27bb2                                                           |                 goto label_11;
                                                                                     |             }
    0x00027ace ldr r2, [r3, 4]                                                       |             r2 = *((r3 + 4));
    0x00027ad0 adds r2, 1                                                            |             r2++;
    0x00027ad2 str r2, [r3, 4]                                                       |             *((r3 + 4)) = r2;
                                                                                     |         }
                                                                                     | label_4:
    0x00027ad4 mov r1, r8                                                            |         r1 = r8;
    0x00027ad6 mov r0, r5                                                            |         r0 = r5;
    0x00027ad8 blx 0xe650                                                            |         fcn_0000e650 ();
    0x00027adc ldr r7, [sp, 0x18]                                                    |         r7 = var_18h;
                                                                                     |         if (r7 != 0) {
    0x00027ade cbz r7, 0x27af8                                                       |             
    0x00027ae0 ldr r3, [pc, 0x158]                                                   |             r3 = *(0x27c3c);
    0x00027ae2 ldr.w sb, [r6, r3]                                                    |             sb = *((r6 + r3));
    0x00027ae6 ldrb.w r3, [sb]                                                       |             r3 = *(sb);
    0x00027aea cmp r3, 0                                                             |             
                                                                                     |             if (r3 == 0) {
    0x00027aec beq 0x27b7e                                                           |                 goto label_12;
                                                                                     |             }
    0x00027aee ldr r3, [r7, 4]                                                       |             r3 = *((r7 + 4));
    0x00027af0 subs r2, r3, 1                                                        |             r2 = r3 - 1;
    0x00027af2 str r2, [r7, 4]                                                       |             *((r7 + 4)) = r2;
                                                                                     | label_2:
    0x00027af4 cmp r3, 1                                                             |             
                                                                                     |             if (r3 == 1) {
    0x00027af6 beq 0x27b5a                                                           |                 goto label_13;
                                                                                     |             }
                                                                                     |         }
                                                                                     | label_1:
    0x00027af8 add.w r6, r5, 0x30                                                    |         r6 = r5 + 0x30;
    0x00027afc adds r4, 0x30                                                         |         r4 += 0x30;
    0x00027afe cmp r6, r4                                                            |         
                                                                                     |         if (r6 != r4) {
    0x00027b00 beq 0x27b1a                                                           |             
    0x00027b02 mov r0, r6                                                            |             r0 = r6;
    0x00027b04 blx 0xedb4                                                            |             fcn_0000edb4 ();
    0x00027b08 mov r1, r4                                                            |             r1 = r4;
    0x00027b0a mov r4, sp                                                            |             r4 = sp;
    0x00027b0c mov r0, r4                                                            |             r0 = r4;
    0x00027b0e blx 0xeb24                                                            |             r0 = fcn_0000eb24 ();
    0x00027b12 ldm.w r4, {r0, r1, r2, r3}                                            |             r0 = *(r4);
                                                                                     |             r1 = *((r4 + 4));
                                                                                     |             r2 = *((r4 + 8));
                                                                                     |             r3 = *((r4 + 12));
    0x00027b16 stm.w r6, {r0, r1, r2, r3}                                            |             *(r6) = r0;
                                                                                     |             *((r6 + 4)) = r1;
                                                                                     |             *((r6 + 8)) = r2;
                                                                                     |             *((r6 + 12)) = r3;
                                                                                     |         }
                                                                                     | label_8:
    0x00027b1a ldr r2, [pc, 0x124]                                                   |         
    0x00027b1c ldr r3, [pc, 0x114]                                                   |         r3 = *(0x27c34);
    0x00027b1e add r2, pc                                                            |         r2 = 0x4f764;
    0x00027b20 ldr r3, [r2, r3]                                                      |         r3 = *(0x4f764);
    0x00027b22 ldr r2, [r3]                                                          |         r2 = *(0x4f764);
    0x00027b24 ldr r3, [sp, 0x1c]                                                    |         r3 = var_1ch;
    0x00027b26 eors r2, r3                                                           |         r2 ^= r3;
    0x00027b28 mov.w r3, 0                                                           |         r3 = 0;
                                                                                     |         if (r2 != r3) {
    0x00027b2c bne 0x27c1e                                                           |             goto label_14;
                                                                                     |         }
    0x00027b2e mov r0, r5                                                            |         r0 = r5;
    0x00027b30 add sp, 0x24                                                          |         
    0x00027b32 pop.w {r4, r5, r6, r7, r8, sb, pc}                                    |         
    0x00027b36 ldr r3, [r7]                                                          |         r3 = *(r7);
    0x00027b38 mov r0, r7                                                            |         r0 = r7;
    0x00027b3a ldr r3, [r3, 8]                                                       |         r3 = *((r3 + 8));
    0x00027b3c blx r3                                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027b3e ldrb.w r3, [sb]                                                       |         r3 = *(sb);
    0x00027b42 cmp r3, 0                                                             |         
                                                                                     |         if (r3 == 0) {
    0x00027b44 beq 0x27c02                                                           |             goto label_15;
                                                                                     |         }
    0x00027b46 ldr r3, [r7, 8]                                                       |         r3 = *((r7 + 8));
    0x00027b48 subs r2, r3, 1                                                        |         r2 = r3 - 1;
    0x00027b4a str r2, [r7, 8]                                                       |         *((r7 + 8)) = r2;
                                                                                     | label_7:
    0x00027b4c cmp r3, 1                                                             |         
    0x00027b4e bne 0x27aba                                                           |         
                                                                                     |     }
    0x00027b50 ldr r3, [r7]                                                          |     r3 = *(r7);
    0x00027b52 mov r0, r7                                                            |     r0 = r7;
    0x00027b54 ldr r3, [r3, 0xc]                                                     |     r3 = *((r3 + 0xc));
    0x00027b56 blx r3                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027b58 b 0x27aba                                                             |     goto label_0;
                                                                                     | label_13:
    0x00027b5a ldr r3, [r7]                                                          |     r3 = *(r7);
    0x00027b5c mov r0, r7                                                            |     r0 = r7;
    0x00027b5e ldr r3, [r3, 8]                                                       |     r3 = *((r3 + 8));
    0x00027b60 blx r3                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027b62 ldrb.w r3, [sb]                                                       |     r3 = *(sb);
    0x00027b66 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x00027b68 beq 0x27be6                                                           |         goto label_16;
                                                                                     |     }
    0x00027b6a ldr r3, [r7, 8]                                                       |     r3 = *((r7 + 8));
    0x00027b6c subs r2, r3, 1                                                        |     r2 = r3 - 1;
    0x00027b6e str r2, [r7, 8]                                                       |     *((r7 + 8)) = r2;
                                                                                     | label_6:
    0x00027b70 cmp r3, 1                                                             |     
                                                                                     |     if (r3 != 1) {
    0x00027b72 bne 0x27af8                                                           |         goto label_1;
                                                                                     |     }
    0x00027b74 ldr r3, [r7]                                                          |     r3 = *(r7);
    0x00027b76 mov r0, r7                                                            |     r0 = r7;
    0x00027b78 ldr r3, [r3, 0xc]                                                     |     r3 = *((r3 + 0xc));
    0x00027b7a blx r3                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027b7c b 0x27af8                                                             |     goto label_1;
                                                                                     | label_12:
    0x00027b7e adds r2, r7, 4                                                        |     r2 = r7 + 4;
    0x00027b80 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027b84 ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x00027b88 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x00027b8a strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x00027b8e cmp r0, 0                                                             |         
    0x00027b90 bne 0x27b84                                                           |         
                                                                                     |     } while (r0 != 0);
    0x00027b92 dmb ish                                                               |     __asm ("dmb ish");
    0x00027b96 b 0x27af4                                                             |     goto label_2;
                                                                                     | label_10:
    0x00027b98 adds r2, r7, 4                                                        |     r2 = r7 + 4;
    0x00027b9a dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027b9e ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x00027ba2 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x00027ba4 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x00027ba8 cmp r0, 0                                                             |         
    0x00027baa bne 0x27b9e                                                           |         
                                                                                     |     } while (r0 != 0);
    0x00027bac dmb ish                                                               |     __asm ("dmb ish");
    0x00027bb0 b 0x27ab6                                                             |     goto label_3;
                                                                                     | label_11:
    0x00027bb2 adds r3, 4                                                            |     r3 += 4;
    0x00027bb4 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027bb8 ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x00027bbc adds r1, 1                                                            |         r1++;
    0x00027bbe strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x00027bc2 cmp r2, 0                                                             |         
    0x00027bc4 bne 0x27bb8                                                           |         
                                                                                     |     } while (r2 != 0);
    0x00027bc6 dmb ish                                                               |     __asm ("dmb ish");
    0x00027bca b 0x27ad4                                                             |     goto label_4;
                                                                                     | label_9:
    0x00027bcc adds r3, 4                                                            |     r3 += 4;
    0x00027bce dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027bd2 ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x00027bd6 adds r1, 1                                                            |         r1++;
    0x00027bd8 strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x00027bdc cmp r2, 0                                                             |         
    0x00027bde bne 0x27bd2                                                           |         
                                                                                     |     } while (r2 != 0);
    0x00027be0 dmb ish                                                               |     __asm ("dmb ish");
    0x00027be4 b 0x27a92                                                             |     goto label_5;
                                                                                     | label_16:
    0x00027be6 add.w r2, r7, 8                                                       |     r2 = r7 + 8;
    0x00027bea dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027bee ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x00027bf2 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x00027bf4 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x00027bf8 cmp r0, 0                                                             |         
    0x00027bfa bne 0x27bee                                                           |         
                                                                                     |     } while (r0 != 0);
    0x00027bfc dmb ish                                                               |     __asm ("dmb ish");
    0x00027c00 b 0x27b70                                                             |     goto label_6;
                                                                                     | label_15:
    0x00027c02 add.w r2, r7, 8                                                       |     r2 = r7 + 8;
    0x00027c06 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027c0a ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x00027c0e subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x00027c10 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x00027c14 cmp r0, 0                                                             |         
    0x00027c16 bne 0x27c0a                                                           |         
                                                                                     |     } while (r0 != 0);
    0x00027c18 dmb ish                                                               |     __asm ("dmb ish");
    0x00027c1c b 0x27b4c                                                             |     goto label_7;
                                                                                     | label_14:
    0x00027c1e blx 0xea48                                                            |     fcn_0000ea48 ();
                                                                                     |     do {
    0x00027c22 ldr r0, [sp, 0x18]                                                    |         r0 = var_18h;
                                                                                     |         if (r0 != 0) {
    0x00027c24 cbz r0, 0x27c2a                                                       |             
    0x00027c26 bl 0x18a84                                                            |             r0 = fcn_00018a84 (r0);
                                                                                     |         }
    0x00027c2a blx 0xea54                                                            |         fcn_0000ea54 ();
    0x00027c2e b 0x27c22                                                             |         
                                                                                     |     } while (1);
                                                                                     | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x27668 */
                                                                                     | #include <stdint.h>
                                                                                     |  
    ; (fcn) method.mqtt::will_options.will_options_mqtt::will_options_const_ ()      | void method_mqtt::will_options_will_options_mqtt::will_options_const_ (int16_t arg1, int16_t arg2) {
                                                                                     |     int16_t var_4h;
                                                                                     |     int16_t var_8h;
                                                                                     |     int16_t var_ch;
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
                                                                                     |     /* mqtt::will_options::will_options(mqtt::will_options const&) */
    0x00027668 ldr r2, [pc, 0x1f4]                                                   |     
    0x0002766a mov ip, r0                                                            |     
    0x0002766c ldr r3, [pc, 0x1f4]                                                   |     r3 = *(0x27864);
    0x0002766e push.w {r4, r5, r6, r7, r8, sb, sl, lr}                               |     
    0x00027672 mov lr, r1                                                            |     lr = r1;
    0x00027674 add r2, pc                                                            |     r2 = 0x4eed8;
    0x00027676 sub sp, 0x10                                                          |     
    0x00027678 mov r4, r0                                                            |     r4 = r0;
    0x0002767a mov r5, r1                                                            |     r5 = r1;
    0x0002767c ldr r3, [r2, r3]                                                      |     
    0x0002767e add.w r8, r0, 0x30                                                    |     r8 = r0 + 0x30;
    0x00027682 ldr r7, [pc, 0x1e4]                                                   |     
    0x00027684 movs r6, 0                                                            |     r6 = 0;
    0x00027686 ldr r3, [r3]                                                          |     r3 = *(0x4eed8);
    0x00027688 str r3, [sp, 0xc]                                                     |     var_ch = r3;
    0x0002768a mov.w r3, 0                                                           |     r3 = 0;
    0x0002768e ldm.w lr!, {r0, r1, r2, r3}                                           |     r0 = *(lr!);
                                                                                     |     r1 = *((lr! + 4));
                                                                                     |     r2 = *((lr! + 8));
                                                                                     |     r3 = *((lr! + 12));
    0x00027692 add r7, pc                                                            |     r7 = 0x4ef00;
    0x00027694 stm.w ip!, {r0, r1, r2, r3}                                           |     *(ip!) = r0;
                                                                                     |     *((ip! + 4)) = r1;
                                                                                     |     *((ip! + 8)) = r2;
                                                                                     |     *((ip! + 12)) = r3;
    0x00027698 ldm.w lr, {r0, r1, r2, r3}                                            |     r0 = *(lr);
                                                                                     |     r1 = *((lr + 4));
                                                                                     |     r2 = *((lr + 8));
                                                                                     |     r3 = *((lr + 12));
    0x0002769c stm.w ip, {r0, r1, r2, r3}                                            |     *(ip) = r0;
                                                                                     |     *((ip + 4)) = r1;
                                                                                     |     *((ip + 8)) = r2;
                                                                                     |     *((ip + 12)) = r3;
    0x000276a0 add.w r1, r5, 0x30                                                    |     r1 = r5 + 0x30;
    0x000276a4 mov r0, r8                                                            |     r0 = r8;
    0x000276a6 strd r6, r6, [r4, 0x20]                                               |     __asm ("strd r6, r6, [r4, 0x20]");
    0x000276aa strd r6, r6, [r4, 0x28]                                               |     __asm ("strd r6, r6, [r4, 0x28]");
    0x000276ae blx 0xeb24                                                            |     fcn_0000eb24 ();
    0x000276b2 ldr r3, [r5, 0x20]                                                    |     r3 = *((r5 + 0x20));
    0x000276b4 str r3, [sp, 4]                                                       |     var_4h = r3;
    0x000276b6 ldr r3, [r5, 0x24]                                                    |     r3 = *((r5 + 0x24));
    0x000276b8 str r3, [sp, 8]                                                       |     var_8h = r3;
                                                                                     |     if (r3 != 0) {
    0x000276ba cbz r3, 0x276cc                                                       |         
    0x000276bc ldr r2, [pc, 0x1ac]                                                   |         r2 = *(0x2786c);
    0x000276be ldr r2, [r7, r2]                                                      |         r2 = *((r7 + r2));
    0x000276c0 ldrb r2, [r2]                                                         |         r2 = *(r2);
    0x000276c2 cmp r2, 0                                                             |         
                                                                                     |         if (r2 == 0) {
    0x000276c4 beq 0x27796                                                           |             goto label_8;
                                                                                     |         }
    0x000276c6 ldr r2, [r3, 4]                                                       |         r2 = *((r3 + 4));
    0x000276c8 adds r2, 1                                                            |         r2++;
    0x000276ca str r2, [r3, 4]                                                       |         *((r3 + 4)) = r2;
                                                                                     |     }
                                                                                     | label_2:
    0x000276cc add.w sb, sp, 4                                                       |     sb += var_4h;
    0x000276d0 mov r0, r4                                                            |     r0 = r4;
    0x000276d2 mov r1, sb                                                            |     r1 = sb;
    0x000276d4 blx 0xe900                                                            |     fcn_0000e900 ();
    0x000276d8 ldr r6, [sp, 8]                                                       |     r6 = var_8h;
                                                                                     |     if (r6 == 0) {
    0x000276da cbz r6, 0x276f4                                                       |         goto label_0;
                                                                                     |     }
    0x000276dc ldr r3, [pc, 0x18c]                                                   |     r3 = *(0x2786c);
    0x000276de ldr.w sl, [r7, r3]                                                    |     sl = *((r7 + r3));
    0x000276e2 ldrb.w r3, [sl]                                                       |     r3 = *(sl);
    0x000276e6 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x000276e8 beq 0x277ca                                                           |         goto label_9;
                                                                                     |     }
    0x000276ea ldr r3, [r6, 4]                                                       |     r3 = *((r6 + 4));
    0x000276ec subs r2, r3, 1                                                        |     r2 = r3 - 1;
    0x000276ee str r2, [r6, 4]                                                       |     *((r6 + 4)) = r2;
                                                                                     | label_4:
    0x000276f0 cmp r3, 1                                                             |     
    0x000276f2 beq 0x2774e                                                           |     
                                                                                     |     while (r3 != 1) {
                                                                                     | label_0:
    0x000276f4 ldrd r2, r3, [r5, 0x28]                                               |         __asm ("ldrd r2, r3, [r5, 0x28]");
    0x000276f8 strd r2, r3, [sp, 4]                                                  |         __asm ("strd r2, r3, [var_4h]");
                                                                                     |         if (r3 != 0) {
    0x000276fc cbz r3, 0x2770e                                                       |             
    0x000276fe ldr r2, [pc, 0x16c]                                                   |             r2 = *(0x2786e);
    0x00027700 ldr r2, [r7, r2]                                                      |             r2 = *((r7 + r2));
    0x00027702 ldrb r2, [r2]                                                         |             r2 = *(r2);
    0x00027704 cmp r2, 0                                                             |             
                                                                                     |             if (r2 == 0) {
    0x00027706 beq 0x277e4                                                           |                 goto label_10;
                                                                                     |             }
    0x00027708 ldr r2, [r3, 4]                                                       |             r2 = *((r3 + 4));
    0x0002770a adds r2, 1                                                            |             r2++;
    0x0002770c str r2, [r3, 4]                                                       |             *((r3 + 4)) = r2;
                                                                                     |         }
                                                                                     | label_5:
    0x0002770e mov r1, sb                                                            |         r1 = sb;
    0x00027710 mov r0, r4                                                            |         r0 = r4;
    0x00027712 blx 0xe650                                                            |         fcn_0000e650 ();
    0x00027716 ldr r5, [sp, 8]                                                       |         r5 = var_8h;
                                                                                     |         if (r5 != 0) {
    0x00027718 cbz r5, 0x27732                                                       |             
    0x0002771a ldr r3, [pc, 0x150]                                                   |             r3 = *(0x2786e);
    0x0002771c ldr.w sl, [r7, r3]                                                    |             sl = *((r7 + r3));
    0x00027720 ldrb.w r3, [sl]                                                       |             r3 = *(sl);
    0x00027724 cmp r3, 0                                                             |             
                                                                                     |             if (r3 == 0) {
    0x00027726 beq 0x277b0                                                           |                 goto label_11;
                                                                                     |             }
    0x00027728 ldr r3, [r5, 4]                                                       |             r3 = *((r5 + 4));
    0x0002772a subs r2, r3, 1                                                        |             r2 = r3 - 1;
    0x0002772c str r2, [r5, 4]                                                       |             *((r5 + 4)) = r2;
                                                                                     | label_3:
    0x0002772e cmp r3, 1                                                             |             
                                                                                     |             if (r3 == 1) {
    0x00027730 beq 0x27772                                                           |                 goto label_12;
                                                                                     |             }
                                                                                     |         }
                                                                                     | label_1:
    0x00027732 ldr r2, [pc, 0x13c]                                                   |         
    0x00027734 ldr r3, [pc, 0x12c]                                                   |         r3 = *(0x27864);
    0x00027736 add r2, pc                                                            |         r2 = 0x4efac;
    0x00027738 ldr r3, [r2, r3]                                                      |         r3 = *(0x4efac);
    0x0002773a ldr r2, [r3]                                                          |         r2 = *(0x4efac);
    0x0002773c ldr r3, [sp, 0xc]                                                     |         r3 = var_ch;
    0x0002773e eors r2, r3                                                           |         r2 ^= r3;
    0x00027740 mov.w r3, 0                                                           |         r3 = 0;
                                                                                     |         if (r2 != r3) {
    0x00027744 bne 0x27836                                                           |             goto label_13;
                                                                                     |         }
    0x00027746 mov r0, r4                                                            |         r0 = r4;
    0x00027748 add sp, 0x10                                                          |         
    0x0002774a pop.w {r4, r5, r6, r7, r8, sb, sl, pc}                                |         
    0x0002774e ldr r3, [r6]                                                          |         r3 = *(r6);
    0x00027750 mov r0, r6                                                            |         r0 = r6;
    0x00027752 ldr r3, [r3, 8]                                                       |         r3 = *((r3 + 8));
    0x00027754 blx r3                                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027756 ldrb.w r3, [sl]                                                       |         r3 = *(sl);
    0x0002775a cmp r3, 0                                                             |         
                                                                                     |         if (r3 == 0) {
    0x0002775c beq 0x277fe                                                           |             goto label_14;
                                                                                     |         }
    0x0002775e ldr r3, [r6, 8]                                                       |         r3 = *((r6 + 8));
    0x00027760 subs r2, r3, 1                                                        |         r2 = r3 - 1;
    0x00027762 str r2, [r6, 8]                                                       |         *((r6 + 8)) = r2;
                                                                                     | label_6:
    0x00027764 cmp r3, 1                                                             |         
    0x00027766 bne 0x276f4                                                           |         
                                                                                     |     }
    0x00027768 ldr r3, [r6]                                                          |     r3 = *(r6);
    0x0002776a mov r0, r6                                                            |     r0 = r6;
    0x0002776c ldr r3, [r3, 0xc]                                                     |     r3 = *((r3 + 0xc));
    0x0002776e blx r3                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027770 b 0x276f4                                                             |     goto label_0;
                                                                                     | label_12:
    0x00027772 ldr r3, [r5]                                                          |     r3 = *(r5);
    0x00027774 mov r0, r5                                                            |     r0 = r5;
    0x00027776 ldr r3, [r3, 8]                                                       |     r3 = *((r3 + 8));
    0x00027778 blx r3                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0002777a ldrb.w r3, [sl]                                                       |     r3 = *(sl);
    0x0002777e cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x00027780 beq 0x2781a                                                           |         goto label_15;
                                                                                     |     }
    0x00027782 ldr r3, [r5, 8]                                                       |     r3 = *((r5 + 8));
    0x00027784 subs r2, r3, 1                                                        |     r2 = r3 - 1;
    0x00027786 str r2, [r5, 8]                                                       |     *((r5 + 8)) = r2;
                                                                                     | label_7:
    0x00027788 cmp r3, 1                                                             |     
                                                                                     |     if (r3 != 1) {
    0x0002778a bne 0x27732                                                           |         goto label_1;
                                                                                     |     }
    0x0002778c ldr r3, [r5]                                                          |     r3 = *(r5);
    0x0002778e mov r0, r5                                                            |     r0 = r5;
    0x00027790 ldr r3, [r3, 0xc]                                                     |     r3 = *((r3 + 0xc));
    0x00027792 blx r3                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00027794 b 0x27732                                                             |     goto label_1;
                                                                                     | label_8:
    0x00027796 adds r3, 4                                                            |     r3 += 4;
    0x00027798 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x0002779c ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x000277a0 adds r1, 1                                                            |         r1++;
    0x000277a2 strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x000277a6 cmp r2, 0                                                             |         
    0x000277a8 bne 0x2779c                                                           |         
                                                                                     |     } while (r2 != 0);
    0x000277aa dmb ish                                                               |     __asm ("dmb ish");
    0x000277ae b 0x276cc                                                             |     goto label_2;
                                                                                     | label_11:
    0x000277b0 adds r2, r5, 4                                                        |     r2 = r5 + 4;
    0x000277b2 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x000277b6 ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x000277ba subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x000277bc strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x000277c0 cmp r0, 0                                                             |         
    0x000277c2 bne 0x277b6                                                           |         
                                                                                     |     } while (r0 != 0);
    0x000277c4 dmb ish                                                               |     __asm ("dmb ish");
    0x000277c8 b 0x2772e                                                             |     goto label_3;
                                                                                     | label_9:
    0x000277ca adds r2, r6, 4                                                        |     r2 = r6 + 4;
    0x000277cc dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x000277d0 ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x000277d4 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x000277d6 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x000277da cmp r0, 0                                                             |         
    0x000277dc bne 0x277d0                                                           |         
                                                                                     |     } while (r0 != 0);
    0x000277de dmb ish                                                               |     __asm ("dmb ish");
    0x000277e2 b 0x276f0                                                             |     goto label_4;
                                                                                     | label_10:
    0x000277e4 adds r3, 4                                                            |     r3 += 4;
    0x000277e6 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x000277ea ldrex r1, [r3]                                                        |         __asm ("ldrex r1, [r3]");
    0x000277ee adds r1, 1                                                            |         r1++;
    0x000277f0 strex r2, r1, [r3]                                                    |         __asm ("strex r2, r1, [r3]");
    0x000277f4 cmp r2, 0                                                             |         
    0x000277f6 bne 0x277ea                                                           |         
                                                                                     |     } while (r2 != 0);
    0x000277f8 dmb ish                                                               |     __asm ("dmb ish");
    0x000277fc b 0x2770e                                                             |     goto label_5;
                                                                                     | label_14:
    0x000277fe add.w r2, r6, 8                                                       |     r2 = r6 + 8;
    0x00027802 dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027806 ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x0002780a subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x0002780c strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x00027810 cmp r0, 0                                                             |         
    0x00027812 bne 0x27806                                                           |         
                                                                                     |     } while (r0 != 0);
    0x00027814 dmb ish                                                               |     __asm ("dmb ish");
    0x00027818 b 0x27764                                                             |     goto label_6;
                                                                                     | label_15:
    0x0002781a add.w r2, r5, 8                                                       |     r2 = r5 + 8;
    0x0002781e dmb ish                                                               |     __asm ("dmb ish");
                                                                                     |     do {
    0x00027822 ldrex r3, [r2]                                                        |         __asm ("ldrex r3, [r2]");
    0x00027826 subs r1, r3, 1                                                        |         r1 = r3 - 1;
    0x00027828 strex r0, r1, [r2]                                                    |         __asm ("strex r0, r1, [r2]");
    0x0002782c cmp r0, 0                                                             |         
    0x0002782e bne 0x27822                                                           |         
                                                                                     |     } while (r0 != 0);
    0x00027830 dmb ish                                                               |     __asm ("dmb ish");
    0x00027834 b 0x27788                                                             |     goto label_7;
                                                                                     | label_13:
    0x00027836 blx 0xea48                                                            |     fcn_0000ea48 ();
                                                                                     |     do {
    0x0002783a ldr r0, [sp, 8]                                                       |         r0 = var_8h;
                                                                                     |         if (r0 != 0) {
    0x0002783c cbz r0, 0x27842                                                       |             
    0x0002783e bl 0x18a84                                                            |             fcn_00018a84 (r0);
                                                                                     |         }
    0x00027842 mov r0, r8                                                            |         r0 = r8;
    0x00027844 blx 0xedb4                                                            |         fcn_0000edb4 ();
    0x00027848 ldr r0, [r4, 0x2c]                                                    |         r0 = *((r4 + 0x2c));
                                                                                     |         if (r0 != 0) {
    0x0002784a cbz r0, 0x27850                                                       |             
    0x0002784c bl 0x18a84                                                            |             fcn_00018a84 (r0);
                                                                                     |         }
    0x00027850 ldr r0, [r4, 0x24]                                                    |         r0 = *((r4 + 0x24));
                                                                                     |         if (r0 != 0) {
    0x00027852 cbz r0, 0x27858                                                       |             
    0x00027854 bl 0x18a84                                                            |             r0 = fcn_00018a84 (r0);
                                                                                     |         }
    0x00027858 blx 0xea54                                                            |         fcn_0000ea54 ();
    0x0002785c b 0x2783a                                                             |         
                                                                                     |     } while (1);
                                                                                     | }
    ; assembly                                                                                                                                                                                                   | /* r2dec pseudo code output */
                                                                                                                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x238b8 */
                                                                                                                                                                                                                 | #include <stdint.h>
                                                                                                                                                                                                                 |  
    ; (fcn) method.std::__cxx11::basic_string_unsigned_char__std::char_traits_unsigned_char___std::allocator_unsigned_char___._M_mutate_unsigned_int__unsigned_int__unsigned_char_const__unsigned_int_ ()        | void method_std::_cxx11::basic_string_unsigned_char_std::char_traits_unsigned_char_std::allocator_unsigned_char_M_mutate_unsigned_int_unsigned_int_unsigned_char_const_unsigned_int_ (int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                                                                 |     int16_t var_0h;
                                                                                                                                                                                                                 |     int16_t var_4h;
                                                                                                                                                                                                                 |     r0 = arg1;
                                                                                                                                                                                                                 |     r1 = arg2;
                                                                                                                                                                                                                 |     r2 = arg3;
                                                                                                                                                                                                                 |     r3 = arg4;
                                                                                                                                                                                                                 |     /* std::__cxx11::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_M_mutate(unsigned int, unsigned int, unsigned char const*, unsigned int) */
    0x000238b8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                                                                                                       |     
    0x000238bc mov r4, r0                                                                                                                                                                                        |     r4 = r0;
    0x000238be ldr r0, [pc, 0xe0]                                                                                                                                                                                |     
    0x000238c0 mov r6, r1                                                                                                                                                                                        |     r6 = r1;
    0x000238c2 sub sp, 0xc                                                                                                                                                                                       |     
    0x000238c4 mov sb, r4                                                                                                                                                                                        |     sb = r4;
    0x000238c6 ldr r1, [pc, 0xdc]                                                                                                                                                                                |     r1 = *(0x239a6);
    0x000238c8 mov sl, r3                                                                                                                                                                                        |     sl = r3;
    0x000238ca add r0, pc                                                                                                                                                                                        |     r0 = 0x47270;
    0x000238cc ldr r3, [sp, 0x30]                                                                                                                                                                                |     r3 = *(arg_30h);
    0x000238ce ldr r7, [sb], 8                                                                                                                                                                                   |     r7 = *(sb);
                                                                                                                                                                                                                 |     sb += 8;
    0x000238d2 adds r5, r6, r2                                                                                                                                                                                   |     r5 = r6 + r2;
    0x000238d4 ldr r1, [r0, r1]                                                                                                                                                                                  |     
    0x000238d6 ldr r0, [r4, 4]                                                                                                                                                                                   |     r0 = *((r4 + 4));
    0x000238d8 cmp sb, r7                                                                                                                                                                                        |     
    0x000238da ldr r1, [r1]                                                                                                                                                                                      |     r1 = *(0x47270);
    0x000238dc str r1, [sp, 4]                                                                                                                                                                                   |     var_4h = r1;
    0x000238de mov.w r1, 0                                                                                                                                                                                       |     r1 = 0;
    0x000238e2 sub.w r1, r3, r2                                                                                                                                                                                  |     r1 = r3 - r2;
    0x000238e6 add r1, r0                                                                                                                                                                                        |     r1 += r0;
    0x000238e8 sub.w r8, r0, r5                                                                                                                                                                                  |     r8 = r0 - r5;
    0x000238ec str r1, [sp]                                                                                                                                                                                      |     *(sp) = r1;
    0x000238ee mov r0, sp                                                                                                                                                                                        |     r0 = sp;
    0x000238f0 ite ne                                                                                                                                                                                            |     
                                                                                                                                                                                                                 |     if (sb == r7) {
    0x000238f2 ldrne r1, [r4, 8]                                                                                                                                                                                 |         r1 = *((r4 + 8));
                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                 |     if (sb != r7) {
    0x000238f4 moveq r1, 0xf                                                                                                                                                                                     |         r1 = 0xf;
                                                                                                                                                                                                                 |     }
    0x000238f6 bl 0x21f14                                                                                                                                                                                        |     fcn_00021f14 (r0, r1, r2);
    0x000238fa ldr.w fp, [r4]                                                                                                                                                                                    |     fp = *(r4);
    0x000238fe mov r7, r0                                                                                                                                                                                        |     r7 = r0;
    0x00023900 cmp r6, 0                                                                                                                                                                                         |     
                                                                                                                                                                                                                 |     if (r6 != 0) {
    0x00023902 bne 0x2396e                                                                                                                                                                                       |         goto label_3;
                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                 | label_1:
    0x00023904 ldr r3, [sp, 0x30]                                                                                                                                                                                |     r3 = *(arg_30h);
    0x00023906 cmp.w sl, 0                                                                                                                                                                                       |     
    0x00023908 lsrs r0, r0, 0x1c                                                                                                                                                                                 |     r0 >>= 0x1c;
    0x0002390a it ne                                                                                                                                                                                             |     
                                                                                                                                                                                                                 |     if (r0 != r0) {
    0x0002390c cmpne r3, 0                                                                                                                                                                                       |         __asm ("cmpne r3, 0");
                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                 |     if (r0 != r0) {
    0x0002390e bne 0x23940                                                                                                                                                                                       |         goto label_4;
                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                 | label_2:
    0x00023910 cmp.w r8, 0                                                                                                                                                                                       |     
                                                                                                                                                                                                                 |     if (r8 != 0) {
    0x00023914 bne 0x23954                                                                                                                                                                                       |         goto label_5;
                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                 |     do {
                                                                                                                                                                                                                 | label_0:
    0x00023916 cmp sb, fp                                                                                                                                                                                        |         
                                                                                                                                                                                                                 |         if (sb != fp) {
    0x00023918 beq 0x23920                                                                                                                                                                                       |             
    0x0002391a mov r0, fp                                                                                                                                                                                        |             r0 = fp;
    0x0002391c blx 0xe9a4                                                                                                                                                                                        |             fcn_0000e9a4 ();
                                                                                                                                                                                                                 |         }
    0x00023920 ldr r3, [sp]                                                                                                                                                                                      |         r3 = *(sp);
    0x00023922 ldr r2, [pc, 0x84]                                                                                                                                                                                |         
    0x00023924 str r7, [r4]                                                                                                                                                                                      |         *(r4) = r7;
    0x00023926 str r3, [r4, 8]                                                                                                                                                                                   |         *((r4 + 8)) = r3;
    0x00023928 ldr r3, [pc, 0x78]                                                                                                                                                                                |         r3 = *(0x239a4);
    0x0002392a add r2, pc                                                                                                                                                                                        |         r2 = 0x472d8;
    0x0002392c ldr r3, [r2, r3]                                                                                                                                                                                  |         r3 = *(0x472d8);
    0x0002392e ldr r2, [r3]                                                                                                                                                                                      |         r2 = *(0x472d8);
    0x00023930 ldr r3, [sp, 4]                                                                                                                                                                                   |         r3 = var_4h;
    0x00023932 eors r2, r3                                                                                                                                                                                       |         r2 ^= r3;
    0x00023934 mov.w r3, 0                                                                                                                                                                                       |         r3 = 0;
                                                                                                                                                                                                                 |         if (r2 != r3) {
    0x00023938 bne 0x2399c                                                                                                                                                                                       |             goto label_6;
                                                                                                                                                                                                                 |         }
    0x0002393a add sp, 0xc                                                                                                                                                                                       |         
    0x0002393c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                                                                        |         
                                                                                                                                                                                                                 | label_4:
    0x00023940 cmp r3, 1                                                                                                                                                                                         |         
    0x00023942 add.w r0, r7, r6                                                                                                                                                                                  |         r0 = r7 + r6;
                                                                                                                                                                                                                 |         if (r3 != 1) {
    0x00023946 bne 0x23984                                                                                                                                                                                       |             goto label_7;
                                                                                                                                                                                                                 |         }
    0x00023948 ldrb.w r3, [sl]                                                                                                                                                                                   |         r3 = *(sl);
    0x0002394c strb r3, [r7, r6]                                                                                                                                                                                 |         *((r7 + r6)) = r3;
    0x0002394e cmp.w r8, 0                                                                                                                                                                                       |         
    0x00023952 beq 0x23916                                                                                                                                                                                       |         
                                                                                                                                                                                                                 |     } while (r8 == 0);
                                                                                                                                                                                                                 | label_5:
    0x00023954 ldr r3, [sp, 0x30]                                                                                                                                                                                |     r3 = *(arg_30h);
    0x00023956 cmp.w r8, 1                                                                                                                                                                                       |     
    0x0002395a add.w r1, fp, r5                                                                                                                                                                                  |     r1 = fp + r5;
    0x0002395e add r6, r3                                                                                                                                                                                        |     r6 += r3;
    0x00023960 add.w r0, r7, r6                                                                                                                                                                                  |     r0 = r7 + r6;
                                                                                                                                                                                                                 |     if (r8 == 1) {
    0x00023964 bne 0x2398e                                                                                                                                                                                       |         
    0x00023966 ldrb.w r3, [fp, r5]                                                                                                                                                                               |         r3 = *((fp + r5));
    0x0002396a strb r3, [r7, r6]                                                                                                                                                                                 |         *((r7 + r6)) = r3;
    0x0002396c b 0x23916                                                                                                                                                                                         |         goto label_0;
                                                                                                                                                                                                                 | label_3:
    0x0002396e cmp r6, 1                                                                                                                                                                                         |         
                                                                                                                                                                                                                 |         if (r6 == 1) {
    0x00023970 bne 0x2397a                                                                                                                                                                                       |             
    0x00023972 ldrb.w r2, [fp]                                                                                                                                                                                   |             r2 = *(fp);
    0x00023976 strb r2, [r0]                                                                                                                                                                                     |             *(r0) = r2;
    0x00023978 b 0x23904                                                                                                                                                                                         |             goto label_1;
                                                                                                                                                                                                                 |         }
    0x0002397a mov r2, r6                                                                                                                                                                                        |         r2 = r6;
    0x0002397c mov r1, fp                                                                                                                                                                                        |         r1 = fp;
    0x0002397e blx 0xe930                                                                                                                                                                                        |         sym ();
    0x00023982 b 0x23904                                                                                                                                                                                         |         goto label_1;
                                                                                                                                                                                                                 | label_7:
    0x00023984 ldr r2, [sp, 0x30]                                                                                                                                                                                |         r2 = *(arg_30h);
    0x00023986 mov r1, sl                                                                                                                                                                                        |         r1 = sl;
    0x00023988 blx 0xebf8                                                                                                                                                                                        |         fcn_0000ebf8 ();
    0x0002398c b 0x23910                                                                                                                                                                                         |         goto label_2;
                                                                                                                                                                                                                 |     }
    0x0002398e cmp.w r8, 0                                                                                                                                                                                       |     
                                                                                                                                                                                                                 |     if (r8 == 0) {
    0x00023992 beq 0x23916                                                                                                                                                                                       |         goto label_0;
                                                                                                                                                                                                                 |     }
    0x00023994 mov r2, r8                                                                                                                                                                                        |     r2 = r8;
    0x00023996 blx 0xe930                                                                                                                                                                                        |     sym ();
    0x0002399a b 0x23916                                                                                                                                                                                         |     goto label_0;
                                                                                                                                                                                                                 | label_6:
    0x0002399c blx 0xea48                                                                                                                                                                                        |     fcn_0000ea48 ();
    0x000239a0 adr r2, 0x198                                                                                                                                                                                     |     r2 = 0x198;
    0x000239a2 movs r1, r0                                                                                                                                                                                       |     r1 = r0;
    0x000239a4 lsls r0, r6, 0xc                                                                                                                                                                                  |     r0 = r6 << 0xc;
    0x000239a6 movs r0, r0                                                                                                                                                                                       |     
    0x000239a8 adr r2, 0x18                                                                                                                                                                                      |     r2 = 0x18;
    0x000239aa movs r1, r0                                                                                                                                                                                       |     r1 = r0;
                                                                                                                                                                                                                 | }
    ; assembly                                                                                                                                                                                                                                                                   | /* r2dec pseudo code output */
                                                                                                                                                                                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x1c4c4 */
                                                                                                                                                                                                                                                                                 | #include <stdint.h>
                                                                                                                                                                                                                                                                                 |  
    ; (fcn) method.std::future_std::__invoke_result_std.decay_void__mqtt::callback::__std::shared_ptr_mqtt::delivery_token___::type__std::decay_mqtt::callback_::type__std::decay_std::shared_ptr_mqtt::delivery_token__::type_::type__std::async_void__mqtt::callback ()        | void method_std::future_std::_invoke_result_std_decay_void_mqtt::callback::_std::shared_ptr_mqtt::delivery_token_::type_std::decay_mqtt::callback_::type_std::decay_std::shared_ptr_mqtt::delivery_token_::type_::type_std::async_void_mqtt::callback (int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                                                                                                                                 |     int16_t var_4h;
                                                                                                                                                                                                                                                                                 |     int16_t var_10h;
                                                                                                                                                                                                                                                                                 |     int16_t var_14h;
                                                                                                                                                                                                                                                                                 |     int16_t var_1ch;
                                                                                                                                                                                                                                                                                 |     r0 = arg1;
                                                                                                                                                                                                                                                                                 |     r1 = arg2;
                                                                                                                                                                                                                                                                                 |     r2 = arg3;
                                                                                                                                                                                                                                                                                 |     r3 = arg4;
                                                                                                                                                                                                                                                                                 |     /* std::future<std::__invoke_result<std::decay<void (mqtt::callback::*)(std::shared_ptr<qtt::delivery_token>)>::type, std::decay<qtt::callback*&>::type, std::decay<std::shared_ptr<qtt::delivery_token>&>::type>::type> std::async<void (mqtt::callback::*)(std::shared_ptr<qtt::delivery_token>), mqtt::callback*&, std::shared_ptr<qtt::delivery_token>&>(std::launch, void (mqtt::callback::*&&)(std::shared_ptr<qtt::delivery_token>), mqtt::callback*&, std::shared_ptr<qtt::delivery_token>&) */
    0x0001c4c4 svcmi 0xf0e92d                                                                                                                                                                                                                                                    |     __asm ("svcmi aav.0x000000ff");
    0x0001c4c8 mov r8, r1                                                                                                                                                                                                                                                        |     r8 = r1;
    0x0001c4ca ldr r4, [pc, 0x380]                                                                                                                                                                                                                                               |     
    0x0001c4cc tst.w r8, 1                                                                                                                                                                                                                                                       |     
    0x0001c4d0 sub sp, 0x24                                                                                                                                                                                                                                                      |     
    0x0001c4d2 mov r5, r0                                                                                                                                                                                                                                                        |     r5 = r0;
    0x0001c4d4 ldr r1, [pc, 0x378]                                                                                                                                                                                                                                               |     r1 = *(0x1c850);
    0x0001c4d6 mov r7, r2                                                                                                                                                                                                                                                        |     r7 = r2;
    0x0001c4d8 add r4, pc                                                                                                                                                                                                                                                        |     r4 = 0x38d2a;
    0x0001c4da ldr r6, [pc, 0x378]                                                                                                                                                                                                                                               |     
    0x0001c4dc ldr.w sl, [sp, 0x48]                                                                                                                                                                                                                                              |     sl = *(arg_48h);
    0x0001c4e0 mov sb, r3                                                                                                                                                                                                                                                        |     sb = r3;
    0x0001c4e2 ldr r1, [r4, r1]                                                                                                                                                                                                                                                  |     
    0x0001c4e4 add r6, pc                                                                                                                                                                                                                                                        |     r6 = 0x38d3e;
    0x0001c4e6 ldr r1, [r1]                                                                                                                                                                                                                                                      |     r1 = *(0x38d2a);
    0x0001c4e8 str r1, [sp, 0x1c]                                                                                                                                                                                                                                                |     var_1ch = r1;
    0x0001c4ea mov.w r1, 0                                                                                                                                                                                                                                                       |     r1 = 0;
                                                                                                                                                                                                                                                                                 |     if ((r8 & 1) != 0) {
    0x0001c4ee bne 0x1c5f0                                                                                                                                                                                                                                                       |         goto label_7;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c4f0 movs r0, 0x38                                                                                                                                                                                                                                                     |     r0 = 0x38;
    0x0001c4f2 blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x0001c4f6 ldr r3, [pc, 0x360]                                                                                                                                                                                                                                               |     r3 = *(0x1c85a);
    0x0001c4f8 movs r2, 1                                                                                                                                                                                                                                                        |     r2 = 1;
    0x0001c4fa strd r2, r2, [r0, 4]                                                                                                                                                                                                                                              |     __asm ("strd r2, r2, [r0, 4]");
    0x0001c4fe mov r8, r0                                                                                                                                                                                                                                                        |     r8 = r0;
    0x0001c500 ldr r2, [pc, 0x358]                                                                                                                                                                                                                                               |     r2 = *(0x1c85c);
    0x0001c502 mov r4, r0                                                                                                                                                                                                                                                        |     r4 = r0;
    0x0001c504 ldr r3, [r6, r3]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r3));
    0x0001c506 add.w r1, r3, 8                                                                                                                                                                                                                                                   |     r1 = r3 + 8;
    0x0001c50a movs r3, 0                                                                                                                                                                                                                                                        |     r3 = 0;
    0x0001c50c str r1, [r8], 0xc                                                                                                                                                                                                                                                 |     *(r8) = r1;
                                                                                                                                                                                                                                                                                 |     r8 += 0xc;
    0x0001c510 strd r3, r3, [r0, 0x10]                                                                                                                                                                                                                                           |     __asm ("strd r3, r3, [r0, 0x10]");
    0x0001c514 strb r3, [r0, 0x18]                                                                                                                                                                                                                                               |     *((r0 + 0x18)) = r3;
    0x0001c516 str r3, [r0, 0x1c]                                                                                                                                                                                                                                                |     *((r0 + 0x1c)) = r3;
    0x0001c518 ldr r3, [r6, r2]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r2));
    0x0001c51a adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
    0x0001c51c str r3, [r0, 0xc]                                                                                                                                                                                                                                                 |     *((r0 + 0xc)) = r3;
    0x0001c51e movs r0, 8                                                                                                                                                                                                                                                        |     r0 = 8;
    0x0001c520 blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x0001c524 movs r3, 0                                                                                                                                                                                                                                                        |     r3 = 0;
    0x0001c526 mov fp, r0                                                                                                                                                                                                                                                        |     
    0x0001c528 strd r3, r3, [r0]                                                                                                                                                                                                                                                 |     __asm ("strd r3, r3, [r0]");
    0x0001c52c blx 0xe800                                                                                                                                                                                                                                                        |     fcn_0000e800 ();
    0x0001c530 ldr r3, [pc, 0x32c]                                                                                                                                                                                                                                               |     r3 = *(0x1c860);
    0x0001c532 ldr r3, [r6, r3]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r3));
    0x0001c534 str.w fp, [r4, 0x20]                                                                                                                                                                                                                                              |     __asm ("str.w fp, [r4, 0x20]");
    0x0001c538 adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
    0x0001c53a str.w r3, [fp]                                                                                                                                                                                                                                                    |     __asm ("str.w r3, [fp]");
    0x0001c53e ldrd r2, r3, [sl]                                                                                                                                                                                                                                                 |     __asm ("ldrd r2, r3, [sl]");
    0x0001c542 strd r2, r3, [r4, 0x24]                                                                                                                                                                                                                                           |     __asm ("strd r2, r3, [r4, 0x24]");
    0x0001c546 cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x0001c548 beq.w 0x1c6d2                                                                                                                                                                                                                                                     |         goto label_8;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c54c ldr r2, [pc, 0x314]                                                                                                                                                                                                                                               |     r2 = *(0x1c864);
    0x0001c54e ldr r2, [r6, r2]                                                                                                                                                                                                                                                  |     r2 = *((r6 + r2));
    0x0001c550 ldrb r1, [r2]                                                                                                                                                                                                                                                     |     r1 = *(r2);
    0x0001c552 cmp r1, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r1 == 0) {
    0x0001c554 beq.w 0x1c74e                                                                                                                                                                                                                                                     |         goto label_9;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c558 ldr r1, [r3, 4]                                                                                                                                                                                                                                                   |     r1 = *((r3 + 4));
    0x0001c55a adds r1, 1                                                                                                                                                                                                                                                        |     r1++;
    0x0001c55c str r1, [r3, 4]                                                                                                                                                                                                                                                   |     *((r3 + 4)) = r1;
                                                                                                                                                                                                                                                                                 | label_2:
    0x0001c55e ldr.w r3, [sb]                                                                                                                                                                                                                                                    |     r3 = *(sb);
    0x0001c562 ldm.w r7, {r0, r1}                                                                                                                                                                                                                                                |     r0 = *(r7);
                                                                                                                                                                                                                                                                                 |     r1 = *((r7 + 4));
    0x0001c566 strd r8, r4, [r5]                                                                                                                                                                                                                                                 |     __asm ("strd r8, r4, [r5]");
    0x0001c56a str r3, [r4, 0x2c]                                                                                                                                                                                                                                                |     *((r4 + 0x2c)) = r3;
    0x0001c56c add.w r3, r4, 0x30                                                                                                                                                                                                                                                |     r3 = r4 + 0x30;
    0x0001c570 stm.w r3, {r0, r1}                                                                                                                                                                                                                                                |     *(r3) = r0;
                                                                                                                                                                                                                                                                                 |     *((r3 + 4)) = r1;
    0x0001c574 ldrb r3, [r2]                                                                                                                                                                                                                                                     |     r3 = *(r2);
    0x0001c576 cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 != 0) {
    0x0001c578 bne.w 0x1c6c8                                                                                                                                                                                                                                                     |         goto label_10;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_0:
    0x0001c57c adds r3, r4, 4                                                                                                                                                                                                                                                    |     r3 = r4 + 4;
    0x0001c57e dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x0001c582 ldrex r0, [r3]                                                                                                                                                                                                                                                    |         __asm ("ldrex r0, [r3]");
    0x0001c586 adds r0, 1                                                                                                                                                                                                                                                        |         r0++;
    0x0001c588 strex r1, r0, [r3]                                                                                                                                                                                                                                                |         __asm ("strex r1, r0, [r3]");
    0x0001c58c cmp r1, 0                                                                                                                                                                                                                                                         |         
    0x0001c58e bne 0x1c582                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r1 != 0);
    0x0001c590 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001c594 ldr r3, [r5]                                                                                                                                                                                                                                                      |     r3 = *(r5);
                                                                                                                                                                                                                                                                                 | label_1:
    0x0001c596 cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x0001c598 beq.w 0x1c76c                                                                                                                                                                                                                                                     |         goto label_11;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c59c adds r3, 0xc                                                                                                                                                                                                                                                      |     r3 += 0xc;
    0x0001c59e mov.w r0, 1                                                                                                                                                                                                                                                       |     r0 = 1;
    0x0001c5a2 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x0001c5a6 ldrexb r1, [r3]                                                                                                                                                                                                                                                   |         __asm ("ldrexb r1, [r3]");
    0x0001c5aa strexb r6, r0, [r3]                                                                                                                                                                                                                                               |         __asm ("strexb r6, r0, [r3]");
    0x0001c5ae cmp r6, 0                                                                                                                                                                                                                                                         |         
    0x0001c5b0 bne 0x1c5a6                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r6 != 0);
    0x0001c5b2 uxtb r1, r1                                                                                                                                                                                                                                                       |     r1 = (int8_t) r1;
    0x0001c5b4 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001c5b8 cmp r1, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r1 != 0) {
    0x0001c5ba bne.w 0x1c772                                                                                                                                                                                                                                                     |         goto label_12;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c5be ldrb r3, [r2]                                                                                                                                                                                                                                                     |     r3 = *(r2);
    0x0001c5c0 cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x0001c5c2 beq.w 0x1c6fe                                                                                                                                                                                                                                                     |         goto label_13;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c5c6 ldr r3, [r4, 4]                                                                                                                                                                                                                                                   |     r3 = *((r4 + 4));
    0x0001c5c8 subs r1, r3, 1                                                                                                                                                                                                                                                    |     r1 = r3 - 1;
    0x0001c5ca str r1, [r4, 4]                                                                                                                                                                                                                                                   |     *((r4 + 4)) = r1;
                                                                                                                                                                                                                                                                                 | label_4:
    0x0001c5cc cmp r3, 1                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 1) {
    0x0001c5ce beq.w 0x1c6d8                                                                                                                                                                                                                                                     |         goto label_14;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_3:
    0x0001c5d2 ldr r2, [pc, 0x294]                                                                                                                                                                                                                                               |     
    0x0001c5d4 ldr r3, [pc, 0x278]                                                                                                                                                                                                                                               |     r3 = *(0x1c850);
    0x0001c5d6 add r2, pc                                                                                                                                                                                                                                                        |     r2 = 0x38e44;
    0x0001c5d8 ldr r3, [r2, r3]                                                                                                                                                                                                                                                  |     r3 = *(0x38e44);
    0x0001c5da ldr r2, [r3]                                                                                                                                                                                                                                                      |     r2 = *(0x38e44);
    0x0001c5dc ldr r3, [sp, 0x1c]                                                                                                                                                                                                                                                |     r3 = var_1ch;
    0x0001c5de eors r2, r3                                                                                                                                                                                                                                                       |     r2 ^= r3;
    0x0001c5e0 mov.w r3, 0                                                                                                                                                                                                                                                       |     r3 = 0;
                                                                                                                                                                                                                                                                                 |     if (r2 != r3) {
    0x0001c5e4 bne.w 0x1c768                                                                                                                                                                                                                                                     |         goto label_15;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c5e8 mov r0, r5                                                                                                                                                                                                                                                        |     r0 = r5;
    0x0001c5ea add sp, 0x24                                                                                                                                                                                                                                                      |     
    0x0001c5ec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                                                                                                                                        |     
                                                                                                                                                                                                                                                                                 | label_7:
    0x0001c5f0 movs r0, 0x40                                                                                                                                                                                                                                                     |     r0 = 0x40;
    0x0001c5f2 blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x0001c5f6 ldr r3, [pc, 0x274]                                                                                                                                                                                                                                               |     r3 = *(0x1c86e);
    0x0001c5f8 movs r2, 1                                                                                                                                                                                                                                                        |     r2 = 1;
    0x0001c5fa strd r2, r2, [r0, 4]                                                                                                                                                                                                                                              |     __asm ("strd r2, r2, [r0, 4]");
    0x0001c5fe mov fp, r0                                                                                                                                                                                                                                                        |     
    0x0001c600 ldr r2, [pc, 0x26c]                                                                                                                                                                                                                                               |     r2 = *(0x1c870);
    0x0001c602 mov r4, r0                                                                                                                                                                                                                                                        |     r4 = r0;
    0x0001c604 ldr r3, [r6, r3]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r3));
    0x0001c606 add.w r1, r3, 8                                                                                                                                                                                                                                                   |     r1 = r3 + 8;
    0x0001c60a movs r3, 0                                                                                                                                                                                                                                                        |     r3 = 0;
    0x0001c60c str r1, [fp], 0xc                                                                                                                                                                                                                                                 |     *(fp) = r1;
                                                                                                                                                                                                                                                                                 |     fp += 0xc;
    0x0001c610 strd r3, r3, [r0, 0x10]                                                                                                                                                                                                                                           |     __asm ("strd r3, r3, [r0, 0x10]");
    0x0001c614 strb r3, [r0, 0x18]                                                                                                                                                                                                                                               |     *((r0 + 0x18)) = r3;
    0x0001c616 strd r3, r3, [r0, 0x1c]                                                                                                                                                                                                                                           |     __asm ("strd r3, r3, [r0, 0x1c]");
    0x0001c61a str r3, [r0, 0x24]                                                                                                                                                                                                                                                |     *((r0 + 0x24)) = r3;
    0x0001c61c ldr r3, [r6, r2]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r2));
    0x0001c61e adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
    0x0001c620 str r3, [r0, 0xc]                                                                                                                                                                                                                                                 |     *((r0 + 0xc)) = r3;
    0x0001c622 movs r0, 8                                                                                                                                                                                                                                                        |     r0 = 8;
    0x0001c624 blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x0001c628 movs r3, 0                                                                                                                                                                                                                                                        |     r3 = 0;
    0x0001c62a str r0, [sp, 4]                                                                                                                                                                                                                                                   |     var_4h = r0;
    0x0001c62c str r3, [r0]                                                                                                                                                                                                                                                      |     *(r0) = r3;
    0x0001c62e str r3, [r0, 4]                                                                                                                                                                                                                                                   |     *((r0 + 4)) = r3;
    0x0001c630 blx 0xe800                                                                                                                                                                                                                                                        |     fcn_0000e800 ();
    0x0001c634 ldr r3, [pc, 0x228]                                                                                                                                                                                                                                               |     r3 = *(0x1c860);
    0x0001c636 ldr r2, [sp, 4]                                                                                                                                                                                                                                                   |     r2 = var_4h;
    0x0001c638 ldr r3, [r6, r3]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r3));
    0x0001c63a str r2, [r4, 0x28]                                                                                                                                                                                                                                                |     *((r4 + 0x28)) = r2;
    0x0001c63c adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
    0x0001c63e str r3, [r2]                                                                                                                                                                                                                                                      |     *(r2) = r3;
    0x0001c640 ldr.w r3, [sl, 4]                                                                                                                                                                                                                                                 |     r3 = *((sl + 4));
    0x0001c644 ldr.w r2, [sl]                                                                                                                                                                                                                                                    |     r2 = *(sl);
    0x0001c648 str r3, [r4, 0x30]                                                                                                                                                                                                                                                |     *((r4 + 0x30)) = r3;
    0x0001c64a str r2, [r4, 0x2c]                                                                                                                                                                                                                                                |     *((r4 + 0x2c)) = r2;
                                                                                                                                                                                                                                                                                 |     if (r3 != 0) {
    0x0001c64c cbz r3, 0x1c65e                                                                                                                                                                                                                                                   |         
    0x0001c64e ldr r2, [pc, 0x214]                                                                                                                                                                                                                                               |         r2 = *(0x1c866);
    0x0001c650 ldr r2, [r6, r2]                                                                                                                                                                                                                                                  |         r2 = *((r6 + r2));
    0x0001c652 ldrb r2, [r2]                                                                                                                                                                                                                                                     |         r2 = *(r2);
    0x0001c654 cmp r2, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r2 == 0) {
    0x0001c656 beq 0x1c734                                                                                                                                                                                                                                                       |             goto label_16;
                                                                                                                                                                                                                                                                                 |         }
    0x0001c658 ldr r2, [r3, 4]                                                                                                                                                                                                                                                   |         r2 = *((r3 + 4));
    0x0001c65a adds r2, 1                                                                                                                                                                                                                                                        |         r2++;
    0x0001c65c str r2, [r3, 4]                                                                                                                                                                                                                                                   |         *((r3 + 4)) = r2;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_6:
    0x0001c65e ldr.w r3, [sb]                                                                                                                                                                                                                                                    |     r3 = *(sb);
    0x0001c662 movs r2, 0                                                                                                                                                                                                                                                        |     r2 = 0;
    0x0001c664 ldm.w r7, {r0, r1}                                                                                                                                                                                                                                                |     r0 = *(r7);
                                                                                                                                                                                                                                                                                 |     r1 = *((r7 + 4));
    0x0001c668 str r2, [sp, 0x10]                                                                                                                                                                                                                                                |     var_10h = r2;
    0x0001c66a str r3, [r4, 0x34]                                                                                                                                                                                                                                                |     *((r4 + 0x34)) = r3;
    0x0001c66c add.w r3, r4, 0x38                                                                                                                                                                                                                                                |     r3 = r4 + 0x38;
    0x0001c670 stm.w r3, {r0, r1}                                                                                                                                                                                                                                                |     *(r3) = r0;
                                                                                                                                                                                                                                                                                 |     *((r3 + 4)) = r1;
    0x0001c674 movs r0, 0x10                                                                                                                                                                                                                                                     |     r0 = 0x10;
    0x0001c676 blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x0001c67a ldr r3, [pc, 0x1f8]                                                                                                                                                                                                                                               |     r3 = *(0x1c876);
    0x0001c67c movs r2, 0                                                                                                                                                                                                                                                        |     r2 = 0;
    0x0001c67e ldr r3, [r6, r3]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r3));
    0x0001c680 str.w fp, [r0, 4]                                                                                                                                                                                                                                                 |     __asm ("str.w fp, [r0, 4]");
    0x0001c684 adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
    0x0001c686 str r3, [r0]                                                                                                                                                                                                                                                      |     *(r0) = r3;
    0x0001c688 ldr r3, [pc, 0x1ec]                                                                                                                                                                                                                                               |     r3 = *(0x1c878);
    0x0001c68a ldr r3, [r6, r3]                                                                                                                                                                                                                                                  |     r3 = *((r6 + r3));
    0x0001c68c str r0, [sp, 0x14]                                                                                                                                                                                                                                                |     var_14h = r0;
    0x0001c68e str r2, [r0, 0xc]                                                                                                                                                                                                                                                 |     *((r0 + 0xc)) = r2;
    0x0001c690 str r3, [r0, 8]                                                                                                                                                                                                                                                   |     *((r0 + 8)) = r3;
    0x0001c692 add r0, sp, 0x10                                                                                                                                                                                                                                                  |     r0 += var_10h;
    0x0001c694 ldr r3, [pc, 0x1e4]                                                                                                                                                                                                                                               |     r3 = *(0x1c87c);
    0x0001c696 ldr r2, [r6, r3]                                                                                                                                                                                                                                                  |     r2 = *((r6 + r3));
    0x0001c698 add r3, sp, 0x14                                                                                                                                                                                                                                                  |     r3 += var_14h;
    0x0001c69a mov r1, r3                                                                                                                                                                                                                                                        |     r1 = r3;
    0x0001c69c str r3, [sp, 4]                                                                                                                                                                                                                                                   |     var_4h = r3;
    0x0001c69e blx 0xe960                                                                                                                                                                                                                                                        |     cxa_init_primary_exception ();
    0x0001c6a2 ldr r0, [sp, 0x14]                                                                                                                                                                                                                                                |     r0 = var_14h;
                                                                                                                                                                                                                                                                                 |     if (r0 != 0) {
    0x0001c6a4 cbz r0, 0x1c6ac                                                                                                                                                                                                                                                   |         
    0x0001c6a6 ldr r3, [r0]                                                                                                                                                                                                                                                      |         r3 = *(r0);
    0x0001c6a8 ldr r3, [r3, 4]                                                                                                                                                                                                                                                   |         r3 = *((r3 + 4));
    0x0001c6aa blx r3                                                                                                                                                                                                                                                            |         uint32_t (*r3)(uint32_t) (r3);
                                                                                                                                                                                                                                                                                 |     }
    0x0001c6ac ldr r3, [r4, 0x20]                                                                                                                                                                                                                                                |     r3 = *((r4 + 0x20));
    0x0001c6ae cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 != 0) {
    0x0001c6b0 bne 0x1c778                                                                                                                                                                                                                                                       |         goto label_17;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c6b2 ldr r2, [sp, 0x10]                                                                                                                                                                                                                                                |     r2 = var_10h;
    0x0001c6b4 ldr r3, [pc, 0x1ac]                                                                                                                                                                                                                                               |     r3 = *(0x1c864);
    0x0001c6b6 str.w fp, [r5]                                                                                                                                                                                                                                                    |     __asm ("str.w fp, [r5]");
    0x0001c6ba str r4, [r5, 4]                                                                                                                                                                                                                                                   |     *((r5 + 4)) = r4;
    0x0001c6bc str r2, [r4, 0x20]                                                                                                                                                                                                                                                |     *((r4 + 0x20)) = r2;
    0x0001c6be ldr r2, [r6, r3]                                                                                                                                                                                                                                                  |     r2 = *((r6 + r3));
    0x0001c6c0 ldrb r3, [r2]                                                                                                                                                                                                                                                     |     r3 = *(r2);
    0x0001c6c2 cmp r3, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x0001c6c4 beq.w 0x1c57c                                                                                                                                                                                                                                                     |         goto label_0;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_10:
    0x0001c6c8 ldr r1, [r4, 4]                                                                                                                                                                                                                                                   |     r1 = *((r4 + 4));
    0x0001c6ca ldr r3, [r5]                                                                                                                                                                                                                                                      |     r3 = *(r5);
    0x0001c6cc adds r1, 1                                                                                                                                                                                                                                                        |     r1++;
    0x0001c6ce str r1, [r4, 4]                                                                                                                                                                                                                                                   |     *((r4 + 4)) = r1;
    0x0001c6d0 b 0x1c596                                                                                                                                                                                                                                                         |     goto label_1;
                                                                                                                                                                                                                                                                                 | label_8:
    0x0001c6d2 ldr r3, [pc, 0x190]                                                                                                                                                                                                                                               |     r3 = *(0x1c866);
    0x0001c6d4 ldr r2, [r6, r3]                                                                                                                                                                                                                                                  |     r2 = *((r6 + r3));
    0x0001c6d6 b 0x1c55e                                                                                                                                                                                                                                                         |     goto label_2;
                                                                                                                                                                                                                                                                                 | label_14:
    0x0001c6d8 ldr r3, [r4]                                                                                                                                                                                                                                                      |     r3 = *(r4);
    0x0001c6da mov r0, r4                                                                                                                                                                                                                                                        |     r0 = r4;
    0x0001c6dc str r2, [sp, 4]                                                                                                                                                                                                                                                   |     var_4h = r2;
    0x0001c6de ldr r3, [r3, 8]                                                                                                                                                                                                                                                   |     r3 = *((r3 + 8));
    0x0001c6e0 blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001c6e2 ldr r2, [sp, 4]                                                                                                                                                                                                                                                   |     r2 = var_4h;
    0x0001c6e4 ldrb r3, [r2]                                                                                                                                                                                                                                                     |     r3 = *(r2);
                                                                                                                                                                                                                                                                                 |     if (r3 == 0) {
    0x0001c6e6 cbz r3, 0x1c718                                                                                                                                                                                                                                                   |         goto label_18;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c6e8 ldr r3, [r4, 8]                                                                                                                                                                                                                                                   |     r3 = *((r4 + 8));
    0x0001c6ea subs r2, r3, 1                                                                                                                                                                                                                                                    |     r2 = r3 - 1;
    0x0001c6ec str r2, [r4, 8]                                                                                                                                                                                                                                                   |     *((r4 + 8)) = r2;
                                                                                                                                                                                                                                                                                 | label_5:
    0x0001c6ee cmp r3, 1                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r3 != 1) {
    0x0001c6f0 bne.w 0x1c5d2                                                                                                                                                                                                                                                     |         goto label_3;
                                                                                                                                                                                                                                                                                 |     }
    0x0001c6f4 ldr r3, [r4]                                                                                                                                                                                                                                                      |     r3 = *(r4);
    0x0001c6f6 mov r0, r4                                                                                                                                                                                                                                                        |     r0 = r4;
    0x0001c6f8 ldr r3, [r3, 0xc]                                                                                                                                                                                                                                                 |     r3 = *((r3 + 0xc));
    0x0001c6fa blx r3                                                                                                                                                                                                                                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0001c6fc b 0x1c5d2                                                                                                                                                                                                                                                         |     goto label_3;
                                                                                                                                                                                                                                                                                 | label_13:
    0x0001c6fe adds r1, r4, 4                                                                                                                                                                                                                                                    |     r1 = r4 + 4;
    0x0001c700 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x0001c704 ldrex r3, [r1]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r1]");
    0x0001c708 subs r0, r3, 1                                                                                                                                                                                                                                                    |         r0 = r3 - 1;
    0x0001c70a strex r6, r0, [r1]                                                                                                                                                                                                                                                |         __asm ("strex r6, r0, [r1]");
    0x0001c70e cmp r6, 0                                                                                                                                                                                                                                                         |         
    0x0001c710 bne 0x1c704                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r6 != 0);
    0x0001c712 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001c716 b 0x1c5cc                                                                                                                                                                                                                                                         |     goto label_4;
                                                                                                                                                                                                                                                                                 | label_18:
    0x0001c718 add.w r2, r4, 8                                                                                                                                                                                                                                                   |     r2 = r4 + 8;
    0x0001c71c dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x0001c720 ldrex r3, [r2]                                                                                                                                                                                                                                                    |         __asm ("ldrex r3, [r2]");
    0x0001c724 subs r1, r3, 1                                                                                                                                                                                                                                                    |         r1 = r3 - 1;
    0x0001c726 strex r0, r1, [r2]                                                                                                                                                                                                                                                |         __asm ("strex r0, r1, [r2]");
    0x0001c72a cmp r0, 0                                                                                                                                                                                                                                                         |         
    0x0001c72c bne 0x1c720                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r0 != 0);
    0x0001c72e dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001c732 b 0x1c6ee                                                                                                                                                                                                                                                         |     goto label_5;
                                                                                                                                                                                                                                                                                 | label_16:
    0x0001c734 adds r3, 4                                                                                                                                                                                                                                                        |     r3 += 4;
    0x0001c736 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x0001c73a ldrex r1, [r3]                                                                                                                                                                                                                                                    |         __asm ("ldrex r1, [r3]");
    0x0001c73e adds r1, 1                                                                                                                                                                                                                                                        |         r1++;
    0x0001c740 strex r2, r1, [r3]                                                                                                                                                                                                                                                |         __asm ("strex r2, r1, [r3]");
    0x0001c744 cmp r2, 0                                                                                                                                                                                                                                                         |         
    0x0001c746 bne 0x1c73a                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r2 != 0);
    0x0001c748 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001c74c b 0x1c65e                                                                                                                                                                                                                                                         |     goto label_6;
                                                                                                                                                                                                                                                                                 | label_9:
    0x0001c74e adds r3, 4                                                                                                                                                                                                                                                        |     r3 += 4;
    0x0001c750 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x0001c754 ldrex r0, [r3]                                                                                                                                                                                                                                                    |         __asm ("ldrex r0, [r3]");
    0x0001c758 adds r0, 1                                                                                                                                                                                                                                                        |         r0++;
    0x0001c75a strex r1, r0, [r3]                                                                                                                                                                                                                                                |         __asm ("strex r1, r0, [r3]");
    0x0001c75e cmp r1, 0                                                                                                                                                                                                                                                         |         
    0x0001c760 bne 0x1c754                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r1 != 0);
    0x0001c762 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001c766 b 0x1c55e                                                                                                                                                                                                                                                         |     goto label_2;
                                                                                                                                                                                                                                                                                 | label_15:
    0x0001c768 blx 0xea48                                                                                                                                                                                                                                                        |     fcn_0000ea48 ();
                                                                                                                                                                                                                                                                                 | label_11:
    0x0001c76c movs r0, 3                                                                                                                                                                                                                                                        |     r0 = 3;
    0x0001c76e blx 0xe644                                                                                                                                                                                                                                                        |     fcn_0000e644 ();
                                                                                                                                                                                                                                                                                 | label_12:
    0x0001c772 movs r0, 1                                                                                                                                                                                                                                                        |     r0 = 1;
    0x0001c774 blx 0xe644                                                                                                                                                                                                                                                        |     fcn_0000e644 ();
                                                                                                                                                                                                                                                                                 | label_17:
    0x0001c778 blx 0xe674                                                                                                                                                                                                                                                        |     fcn_0000e674 ();
    0x0001c77c ldr r0, [r5, 4]                                                                                                                                                                                                                                                   |     r0 = *((r5 + 4));
                                                                                                                                                                                                                                                                                 |     if (r0 != 0) {
    0x0001c77e cbz r0, 0x1c784                                                                                                                                                                                                                                                   |         
    0x0001c780 bl 0x18a84                                                                                                                                                                                                                                                        |         fcn_00018a84 (r0);
                                                                                                                                                                                                                                                                                 |     }
    0x0001c784 mov r0, r4                                                                                                                                                                                                                                                        |     r0 = r4;
    0x0001c786 bl 0x18a84                                                                                                                                                                                                                                                        |     fcn_00018a84 (r0);
    0x0001c78a b 0x1c7a2                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     while (1) {
    0x0001c7a2 blx 0xea54                                                                                                                                                                                                                                                        |         fcn_0000ea54 ();
    0x0001c7a6 b 0x1c7a2                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | }
    ; assembly                                                                                                                                                                                                                                                                   | /* r2dec pseudo code output */
                                                                                                                                                                                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libpaho-mqttpp3.so.1.2.0 @ 0x19184 */
                                                                                                                                                                                                                                                                                 | #include <stdint.h>
                                                                                                                                                                                                                                                                                 |  
    ; (fcn) method.void_std::vector_std::shared_ptr_mqtt::delivery_token___std::allocator_std::shared_ptr_mqtt::delivery_token_____::_M_realloc_insert_std::shared_ptr_mqtt.delivery_token__const____gnu_cxx::__normal_iterator_std::shared_ptr_mqtt::delivery_token___s ()      | void method_void_std::vector_std::shared_ptr_mqtt::delivery_token_std::allocator_std::shared_ptr_mqtt::delivery_token_::_M_realloc_insert_std::shared_ptr_mqtt_delivery_token_const_gnu_cxx::_normal_iterator_std::shared_ptr_mqtt::delivery_token_s (uint32_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                                                                                                                                                                                                 |     int16_t var_0h;
                                                                                                                                                                                                                                                                                 |     int32_t var_0h_2;
                                                                                                                                                                                                                                                                                 |     r0 = arg1;
                                                                                                                                                                                                                                                                                 |     r1 = arg2;
                                                                                                                                                                                                                                                                                 |     r2 = arg3;
                                                                                                                                                                                                                                                                                 |     /* void std::vector<std::shared_ptr<qtt::delivery_token>, std::allocator<std::shared_ptr<qtt::delivery_token> > >::_M_realloc_insert<std::shared_ptr<qtt::delivery_token> const&>(__gnu_cxx::__normal_iterator<std::shared_ptr<qtt::delivery_token>*, std::vector<std::shared_ptr<qtt::delivery_token>, std::allocator<std::shared_ptr<qtt::delivery_token> > > >, std::shared_ptr<qtt::delivery_token> const&) */
    0x00019184 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                                                                                                                                                                       |     
    0x00019188 mov r8, r0                                                                                                                                                                                                                                                        |     r8 = r0;
    0x0001918a ldrd fp, r5, [r0]                                                                                                                                                                                                                                                 |     __asm ("ldrd fp, r5, [r0]");
    0x0001918e mov sb, r1                                                                                                                                                                                                                                                        |     sb = r1;
    0x00019190 mvn r0, 0xf0000000                                                                                                                                                                                                                                                |     r0 = ~0xf0000000;
    0x00019194 sub sp, 0xc                                                                                                                                                                                                                                                       |     
    0x00019196 ldr r1, [pc, 0xec]                                                                                                                                                                                                                                                |     
    0x00019198 sub.w r6, r5, fp                                                                                                                                                                                                                                                  |     r6 = r5 - fp;
    0x0001919c asrs r6, r6, 3                                                                                                                                                                                                                                                    |     r6 >>= 3;
    0x0001919e add r1, pc                                                                                                                                                                                                                                                        |     r1 = 0x32428;
    0x000191a0 cmp r6, r0                                                                                                                                                                                                                                                        |     
                                                                                                                                                                                                                                                                                 |     if (r6 == r0) {
    0x000191a2 beq 0x1927a                                                                                                                                                                                                                                                       |         goto label_4;
                                                                                                                                                                                                                                                                                 |     }
    0x000191a4 cmp r6, 1                                                                                                                                                                                                                                                         |     
    0x000191a6 mov r3, r6                                                                                                                                                                                                                                                        |     r3 = r6;
    0x000191a8 it lo                                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                                 |     if (r6 >= 1) {
    0x000191aa movlo r3, 1                                                                                                                                                                                                                                                       |         r3 = 1;
                                                                                                                                                                                                                                                                                 |     }
    0x000191ac mov r4, sb                                                                                                                                                                                                                                                        |     r4 = sb;
    0x000191ae adds r6, r6, r3                                                                                                                                                                                                                                                   |     r6 += r3;
    0x000191b0 sub.w r7, sb, fp                                                                                                                                                                                                                                                  |     r7 = sb - fp;
                                                                                                                                                                                                                                                                                 |     if (r6 >= r6) {
    0x000191b4 bhs 0x19232                                                                                                                                                                                                                                                       |         goto label_5;
                                                                                                                                                                                                                                                                                 |     }
    0x000191b6 cmp r6, 0                                                                                                                                                                                                                                                         |     
                                                                                                                                                                                                                                                                                 |     if (r6 != 0) {
    0x000191b8 bne 0x19270                                                                                                                                                                                                                                                       |         goto label_6;
                                                                                                                                                                                                                                                                                 |     }
    0x000191ba movs r3, 8                                                                                                                                                                                                                                                        |     r3 = 8;
    0x000191bc mov sl, r6                                                                                                                                                                                                                                                        |     sl = r6;
                                                                                                                                                                                                                                                                                 | label_0:
    0x000191be ldrd r2, r0, [r2]                                                                                                                                                                                                                                                 |     __asm ("ldrd r2, r0, [r2]");
    0x000191c2 str.w r2, [sl, r7]                                                                                                                                                                                                                                                |     __asm ("str.w r2, [sl, r7]");
    0x000191c6 add.w r2, sl, r7                                                                                                                                                                                                                                                  |     r2 = sl + r7;
    0x000191ca str r0, [r2, 4]                                                                                                                                                                                                                                                   |     *((r2 + 4)) = r0;
                                                                                                                                                                                                                                                                                 |     if (r0 != 0) {
    0x000191cc cbz r0, 0x191de                                                                                                                                                                                                                                                   |         
    0x000191ce ldr r2, [pc, 0xb8]                                                                                                                                                                                                                                                |         r2 = *(0x1928a);
    0x000191d0 ldr r2, [r1, r2]                                                                                                                                                                                                                                                  |         r2 = *((r1 + r2));
    0x000191d2 ldrb r2, [r2]                                                                                                                                                                                                                                                     |         r2 = *(r2);
    0x000191d4 cmp r2, 0                                                                                                                                                                                                                                                         |         
                                                                                                                                                                                                                                                                                 |         if (r2 == 0) {
    0x000191d6 beq 0x19252                                                                                                                                                                                                                                                       |             goto label_7;
                                                                                                                                                                                                                                                                                 |         }
    0x000191d8 ldr r2, [r0, 4]                                                                                                                                                                                                                                                   |         r2 = *((r0 + 4));
    0x000191da adds r2, 1                                                                                                                                                                                                                                                        |         r2++;
    0x000191dc str r2, [r0, 4]                                                                                                                                                                                                                                                   |         *((r0 + 4)) = r2;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 | label_1:
    0x000191de cmp sb, fp                                                                                                                                                                                                                                                        |     
    0x000191e0 ittt ne                                                                                                                                                                                                                                                           |     
                                                                                                                                                                                                                                                                                 |     if (sb == fp) {
    0x000191e2 addne r7, sl                                                                                                                                                                                                                                                      |         r7 += sl;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 |     if (sb == fp) {
    0x000191e4 movne r1, fp                                                                                                                                                                                                                                                      |         r1 = fp;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 |     if (sb == fp) {
    0x000191e6 movne r3, sl                                                                                                                                                                                                                                                      |         r3 = sl;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 |     if (sb == fp) {
    0x000191e8 beq 0x191fc                                                                                                                                                                                                                                                       |         goto label_8;
                                                                                                                                                                                                                                                                                 |     }
                                                                                                                                                                                                                                                                                 |     do {
    0x000191ea ldrd r0, r2, [r1]                                                                                                                                                                                                                                                 |         __asm ("ldrd r0, r2, [r1]");
    0x000191ee adds r1, 8                                                                                                                                                                                                                                                        |         r1 += 8;
    0x000191f0 strd r0, r2, [r3]                                                                                                                                                                                                                                                 |         __asm ("strd r0, r2, [r3]");
    0x000191f4 adds r3, 8                                                                                                                                                                                                                                                        |         r3 += 8;
    0x000191f6 cmp r3, r7                                                                                                                                                                                                                                                        |         
    0x000191f8 bne 0x191ea                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r3 != r7);
    0x000191fa adds r3, 8                                                                                                                                                                                                                                                        |     r3 += 8;
                                                                                                                                                                                                                                                                                 | label_8:
    0x000191fc cmp sb, r5                                                                                                                                                                                                                                                        |     
                                                                                                                                                                                                                                                                                 |     if (sb == r5) {
    0x000191fe beq 0x1926c                                                                                                                                                                                                                                                       |         goto label_9;
                                                                                                                                                                                                                                                                                 |     }
    0x00019200 sub.w r5, r5, sb                                                                                                                                                                                                                                                  |     r5 -= sb;
    0x00019204 add r5, r3                                                                                                                                                                                                                                                        |     r5 += r3;
                                                                                                                                                                                                                                                                                 |     do {
    0x00019206 ldrd r1, r2, [r4]                                                                                                                                                                                                                                                 |         __asm ("ldrd r1, r2, [r4]");
    0x0001920a adds r3, 8                                                                                                                                                                                                                                                        |         r3 += 8;
    0x0001920c cmp r3, r5                                                                                                                                                                                                                                                        |         
    0x0001920e add.w r4, r4, 8                                                                                                                                                                                                                                                   |         r4 += 8;
    0x00019212 strd r1, r2, [r3, -0x8]                                                                                                                                                                                                                                           |         __asm ("strd r1, r2, [r3, -0x8]");
    0x00019216 bne 0x19206                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r3 != r5);
                                                                                                                                                                                                                                                                                 | label_2:
    0x00019218 cmp.w fp, 0                                                                                                                                                                                                                                                       |     
                                                                                                                                                                                                                                                                                 |     if (fp != 0) {
    0x0001921c beq 0x19224                                                                                                                                                                                                                                                       |         
    0x0001921e mov r0, fp                                                                                                                                                                                                                                                        |         r0 = fp;
    0x00019220 blx 0xe9a4                                                                                                                                                                                                                                                        |         fcn_0000e9a4 ();
                                                                                                                                                                                                                                                                                 |     }
    0x00019224 strd sl, r5, [r8]                                                                                                                                                                                                                                                 |     __asm ("strd sl, r5, [r8]");
    0x00019228 str.w r6, [r8, 8]                                                                                                                                                                                                                                                 |     __asm ("str.w r6, [r8, 8]");
    0x0001922c add sp, 0xc                                                                                                                                                                                                                                                       |     
    0x0001922e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                                                                                                                                        |     
    0x00019230 ldrh r0, [r6, 0x3e]                                                                                                                                                                                                                                               |     r0 = *((r6 + 0x3e));
                                                                                                                                                                                                                                                                                 | label_5:
    0x00019232 movw r6, 0xfff8                                                                                                                                                                                                                                                   |     
    0x00019236 movt r6, 0x7fff                                                                                                                                                                                                                                                   |     r6 = 0x7ffffff8;
                                                                                                                                                                                                                                                                                 | label_3:
    0x0001923a mov r0, r6                                                                                                                                                                                                                                                        |     r0 = r6;
    0x0001923c strd r2, r1, [sp]                                                                                                                                                                                                                                                 |     __asm ("strd r2, r1, [sp]");
    0x00019240 blx 0xe5ec                                                                                                                                                                                                                                                        |     fcn_0000e5ec ();
    0x00019244 ldrd r2, r1, [sp]                                                                                                                                                                                                                                                 |     __asm ("ldrd r2, r1, [sp]");
    0x00019248 mov sl, r0                                                                                                                                                                                                                                                        |     sl = r0;
    0x0001924a add r6, r0                                                                                                                                                                                                                                                        |     r6 += r0;
    0x0001924c add.w r3, r0, 8                                                                                                                                                                                                                                                   |     r3 = r0 + 8;
    0x00019250 b 0x191be                                                                                                                                                                                                                                                         |     goto label_0;
                                                                                                                                                                                                                                                                                 | label_7:
    0x00019252 adds r0, 4                                                                                                                                                                                                                                                        |     r0 += 4;
    0x00019254 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
                                                                                                                                                                                                                                                                                 |     do {
    0x00019258 ldrex r2, [r0]                                                                                                                                                                                                                                                    |         __asm ("ldrex r2, [r0]");
    0x0001925c adds r2, 1                                                                                                                                                                                                                                                        |         r2++;
    0x0001925e strex r1, r2, [r0]                                                                                                                                                                                                                                                |         __asm ("strex r1, r2, [r0]");
    0x00019262 cmp r1, 0                                                                                                                                                                                                                                                         |         
    0x00019264 bne 0x19258                                                                                                                                                                                                                                                       |         
                                                                                                                                                                                                                                                                                 |     } while (r1 != 0);
    0x00019266 dmb ish                                                                                                                                                                                                                                                           |     __asm ("dmb ish");
    0x0001926a b 0x191de                                                                                                                                                                                                                                                         |     goto label_1;
                                                                                                                                                                                                                                                                                 | label_9:
    0x0001926c mov r5, r3                                                                                                                                                                                                                                                        |     r5 = r3;
    0x0001926e b 0x19218                                                                                                                                                                                                                                                         |     goto label_2;
                                                                                                                                                                                                                                                                                 | label_6:
    0x00019270 cmp r6, r0                                                                                                                                                                                                                                                        |     
    0x00019272 it hs                                                                                                                                                                                                                                                             |     
                                                                                                                                                                                                                                                                                 |     if (r6 < r0) {
    0x00019274 movhs r6, r0                                                                                                                                                                                                                                                      |         r6 = r0;
                                                                                                                                                                                                                                                                                 |     }
    0x00019276 lsls r6, r6, 3                                                                                                                                                                                                                                                    |     r6 <<= 3;
    0x00019278 b 0x1923a                                                                                                                                                                                                                                                         |     goto label_3;
                                                                                                                                                                                                                                                                                 | label_4:
    0x0001927a ldr r0, [pc, 0x10]                                                                                                                                                                                                                                                |     
    0x0001927c add r0, pc                                                                                                                                                                                                                                                        |     r0 = 0x3250e;
    0x0001927e blx 0xe7ac                                                                                                                                                                                                                                                        |     fcn_0000e7ac ();
    0x00019282 nop                                                                                                                                                                                                                                                               |     
    0x00019284 ldr r1, [pc, 0x248]                                                                                                                                                                                                                                               |     r1 = *(0x194d0);
    0x00019286 movs r2, r0                                                                                                                                                                                                                                                       |     r2 = r0;
    0x00019288 lsls r4, r4, 0x10                                                                                                                                                                                                                                                 |     r4 <<= 0x10;
    0x0001928a movs r0, r0                                                                                                                                                                                                                                                       |     
    0x0001928c invalid                                                                                                                                                                                                                                                           |     
                                                                                                                                                                                                                                                                                 | }

[*] Function system used 1 times libpaho-mqttpp3.so.1.2.0