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

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


[*] Function strcpy 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 @ 0x1d6f4 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0001d6f4 ()                              | void fcn_0001d6f4 (int16_t arg1, int16_t arg2) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x0001d6f4 ldr r2, [pc, 0x124]                       |     
    0x0001d6f6 ldr r3, [pc, 0x128]                       |     r3 = *(0x1d822);
    0x0001d6f8 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0001d6fc add.w r8, r0, 0x18                        |     r8 = r0 + 0x18;
    0x0001d700 add r2, pc                                |     r2 = 0x3af20;
    0x0001d702 ldr r5, [r1, 4]                           |     r5 = *((r1 + 4));
    0x0001d704 sub sp, 8                                 |     
    0x0001d706 mov r4, r0                                |     r4 = r0;
    0x0001d708 str.w r8, [r0, 0x10]                      |     __asm ("str.w r8, [r0, 0x10]");
    0x0001d70c ldr r3, [r2, r3]                          |     
    0x0001d70e ldr r7, [r1]                              |     r7 = *(r1);
    0x0001d710 ldr r3, [r3]                              |     r3 = *(0x3af20);
    0x0001d712 str r3, [sp, 4]                           |     var_4h = r3;
    0x0001d714 mov.w r3, 0                               |     r3 = 0;
    0x0001d718 rsbs r3, r5, 0                            |     r3 = r5 - ;
    0x0001d71a clz r2, r7                                |     r2 &= r7;
    0x0001d71e cmp r7, r3                                |     
    0x0001d720 lsr.w r2, r2, 5                           |     r2 >>= 5;
    0x0001d724 it eq                                     |     
                                                         |     if (r7 != r3) {
    0x0001d726 moveq r2, 0                               |         r2 = 0;
                                                         |     }
    0x0001d728 cmp r2, 0                                 |     
                                                         |     if (r2 != 0) {
    0x0001d72a bne 0x1d7e4                               |         goto label_2;
                                                         |     }
    0x0001d72c cmp r5, 0xf                               |     
    0x0001d72e mov r6, r1                                |     r6 = r1;
    0x0001d730 str r5, [sp]                              |     *(sp) = r5;
                                                         |     if (r5 > 0xf) {
    0x0001d732 bhi 0x1d7a8                               |         goto label_3;
                                                         |     }
    0x0001d734 cmp r5, 1                                 |     
                                                         |     if (r5 != 1) {
    0x0001d736 bne 0x1d798                               |         goto label_4;
                                                         |     }
    0x0001d738 ldrb r3, [r7]                             |     r3 = *(r7);
    0x0001d73a strb r3, [r0, 0x18]                       |     *((r0 + 0x18)) = r3;
    0x0001d73c mov r3, r8                                |     r3 = r8;
                                                         |     do {
                                                         | label_1:
    0x0001d73e movs r2, 0                                |         r2 = 0;
    0x0001d740 add.w r0, r4, 0x30                        |         r0 = r4 + 0x30;
    0x0001d744 str r5, [r4, 0x14]                        |         *((r4 + 0x14)) = r5;
    0x0001d746 add.w r1, r4, 0x28                        |         r1 = r4 + 0x28;
    0x0001d74a strb r2, [r3, r5]                         |         *((r3 + r5)) = r2;
    0x0001d74c str r0, [r4, 0x28]                        |         *((r4 + 0x28)) = r0;
    0x0001d74e ldrd r7, r5, [r6, 0x18]                   |         __asm ("ldrd r7, r5, [r6, 0x18]");
    0x0001d752 subs r2, r7, r2                           |         r2 = r7 - r2;
    0x0001d754 rsbs r3, r5, 0                            |         r3 = r5 - ;
    0x0001d756 clz r2, r2                                |         r2 &= r2;
    0x0001d75a cmp r7, r3                                |         
    0x0001d75c lsr.w r2, r2, 5                           |         r2 >>= 5;
    0x0001d760 it eq                                     |         
                                                         |         if (r7 != r3) {
    0x0001d762 moveq r2, 0                               |             r2 = 0;
                                                         |         }
    0x0001d764 cmp r2, 0                                 |         
                                                         |         if (r2 != 0) {
    0x0001d766 bne 0x1d7ec                               |             goto label_5;
                                                         |         }
    0x0001d768 cmp r5, 0xf                               |         
    0x0001d76a str r5, [sp]                              |         *(sp) = r5;
                                                         |         if (r5 > 0xf) {
    0x0001d76c bhi 0x1d7c4                               |             goto label_6;
                                                         |         }
    0x0001d76e cmp r5, 1                                 |         
                                                         |         if (r5 != 1) {
    0x0001d770 bne 0x1d7a2                               |             goto label_7;
                                                         |         }
    0x0001d772 ldrb r3, [r7]                             |         r3 = *(r7);
    0x0001d774 strb.w r3, [r4, 0x30]                     |         *((r4 + 0x30)) = r3;
                                                         | label_0:
    0x0001d778 movs r3, 0                                |         r3 = 0;
    0x0001d77a ldr r2, [pc, 0xa8]                        |         
    0x0001d77c str r5, [r4, 0x2c]                        |         *((r4 + 0x2c)) = r5;
    0x0001d77e strb r3, [r0, r5]                         |         *((r0 + r5)) = r3;
    0x0001d780 ldr r3, [pc, 0x9c]                        |         r3 = *(0x1d820);
    0x0001d782 add r2, pc                                |         r2 = 0x3afac;
    0x0001d784 ldr r3, [r2, r3]                          |         r3 = *(0x3afac);
    0x0001d786 ldr r2, [r3]                              |         r2 = *(0x3afac);
    0x0001d788 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x0001d78a eors r2, r3                               |         r2 ^= r3;
    0x0001d78c mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0001d790 bne 0x1d7e0                               |             goto label_8;
                                                         |         }
    0x0001d792 add sp, 8                                 |         
    0x0001d794 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_4:
    0x0001d798 mov r3, r8                                |         r3 = r8;
    0x0001d79a cmp r5, 0                                 |         
    0x0001d79c beq 0x1d73e                               |         
                                                         |     } while (r5 == 0);
    0x0001d79e mov r0, r8                                |     r0 = r8;
    0x0001d7a0 b 0x1d7b6                                 |     goto label_9;
                                                         | label_7:
    0x0001d7a2 cmp r5, 0                                 |     
                                                         |     if (r5 == 0) {
    0x0001d7a4 beq 0x1d778                               |         goto label_0;
                                                         |     }
    0x0001d7a6 b 0x1d7d2                                 |     goto label_10;
                                                         | label_3:
    0x0001d7a8 adds r0, 0x10                             |     r0 += 0x10;
    0x0001d7aa mov r1, sp                                |     r1 = sp;
    0x0001d7ac blx 0xed18                                |     fcn_0000ed18 ();
    0x0001d7b0 ldr r3, [sp]                              |     r3 = *(sp);
    0x0001d7b2 str r0, [r4, 0x10]                        |     *((r4 + 0x10)) = r0;
    0x0001d7b4 str r3, [r4, 0x18]                        |     *((r4 + 0x18)) = r3;
                                                         | label_9:
    0x0001d7b6 mov r2, r5                                |     r2 = r5;
    0x0001d7b8 mov r1, r7                                |     r1 = r7;
    0x0001d7ba blx 0xebf8                                |     fcn_0000ebf8 ();
    0x0001d7be ldr r5, [sp]                              |     r5 = *(sp);
    0x0001d7c0 ldr r3, [r4, 0x10]                        |     r3 = *((r4 + 0x10));
    0x0001d7c2 b 0x1d73e                                 |     goto label_1;
                                                         | label_6:
    0x0001d7c4 mov r0, r1                                |     r0 = r1;
    0x0001d7c6 mov r1, sp                                |     r1 = sp;
    0x0001d7c8 blx 0xed18                                |     fcn_0000ed18 ();
    0x0001d7cc ldr r3, [sp]                              |     r3 = *(sp);
    0x0001d7ce str r0, [r4, 0x28]                        |     *((r4 + 0x28)) = r0;
    0x0001d7d0 str r3, [r4, 0x30]                        |     *((r4 + 0x30)) = r3;
                                                         | label_10:
    0x0001d7d2 mov r2, r5                                |     r2 = r5;
    0x0001d7d4 mov r1, r7                                |     r1 = r7;
    0x0001d7d6 blx 0xebf8                                |     fcn_0000ebf8 ();
    0x0001d7da ldr r5, [sp]                              |     r5 = *(sp);
    0x0001d7dc ldr r0, [r4, 0x28]                        |     r0 = *((r4 + 0x28));
    0x0001d7de b 0x1d778                                 |     goto label_0;
                                                         | label_8:
    0x0001d7e0 blx 0xea48                                |     fcn_0000ea48 ();
                                                         | label_2:
    0x0001d7e4 ldr r0, [pc, 0x40]                        |     
    0x0001d7e6 add r0, pc                                |     r0 = 0x3b012;
    0x0001d7e8 blx 0xe86c                                |     fcn_0000e86c ();
                                                         | label_5:
    0x0001d7ec ldr r0, [pc, 0x3c]                        |     
    0x0001d7ee add r0, pc                                |     r0 = 0x3b01e;
    0x0001d7f0 blx 0xe86c                                |     fcn_0000e86c ();
                                                         |     do {
    0x0001d7f4 blx 0xe71c                                |         fcn_0000e71c ();
    0x0001d7f8 mov r0, r4                                |         r0 = r4;
    0x0001d7fa blx 0xe9a4                                |         fcn_0000e9a4 ();
    0x0001d7fe blx 0xebdc                                |         malloc (r0);
    0x0001d802 ldr r3, [r4, 0x10]                        |         r3 = *((r4 + 0x10));
    0x0001d804 mov r5, r0                                |         r5 = r0;
    0x0001d806 cmp r3, r8                                |         
                                                         |         if (r3 != r8) {
    0x0001d808 beq 0x1d810                               |             
    0x0001d80a mov r0, r3                                |             r0 = r3;
    0x0001d80c blx 0xe9a4                                |             fcn_0000e9a4 ();
                                                         |         }
    0x0001d810 mov r0, r5                                |         r0 = r5;
    0x0001d812 b 0x1d7f4                                 |         
                                                         |     } 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 @ 0x21074 */
                                                                                                                                     | #include <stdint.h>
                                                                                                                                     |  
    ; (fcn) method.mqtt::message.message_mqtt::buffer_ref_char___mqtt::buffer_ref_char___int__bool__mqtt::properties_const_ ()       | void method_mqtt::message_message_mqtt::buffer_ref_char_mqtt::buffer_ref_char_int_bool_mqtt::properties_const_ (int16_t arg_0h, int16_t arg_4h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                     |     int16_t var_4h_2;
                                                                                                                                     |     int16_t var_8h_3;
                                                                                                                                     |     int16_t var_1ch_2;
                                                                                                                                     |     int16_t var_20h_2;
                                                                                                                                     |     int16_t var_24h_2;
                                                                                                                                     |     int16_t var_2ch;
                                                                                                                                     |     int16_t var_3ch;
                                                                                                                                     |     int16_t var_68h;
                                                                                                                                     |     int16_t var_6ch;
                                                                                                                                     |     r0 = arg1;
                                                                                                                                     |     r1 = arg2;
                                                                                                                                     |     r2 = arg3;
                                                                                                                                     |     r3 = arg4;
                                                                                                                                     |     /* mqtt::message::message(mqtt::buffer_ref<char>, mqtt::buffer_ref<char>, int, bool, mqtt::properties const&) */
    0x00021074 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                           |     
    0x00021078 sub sp, 0x44                                                                                                          |     
    0x0002107a mov sl, r2                                                                                                            |     sl = r2;
    0x0002107c ldrb.w r2, [sp, 0x68]                                                                                                 |     r2 = var_68h;
    0x00021080 mov fp, r1                                                                                                            |     
    0x00021082 mov r4, r0                                                                                                            |     r4 = r0;
    0x00021084 ldr r1, [pc, 0x1bc]                                                                                                   |     
    0x00021086 mov ip, r0                                                                                                            |     
    0x00021088 str r2, [sp, 4]                                                                                                       |     *(arg_4h) = r2;
    0x0002108a mov r7, r3                                                                                                            |     r7 = r3;
    0x0002108c ldr r2, [pc, 0x1b8]                                                                                                   |     r2 = *(0x21248);
    0x0002108e add.w r6, r0, 0x40                                                                                                    |     r6 = r0 + 0x40;
    0x00021092 add r1, pc                                                                                                            |     r1 = 0x422da;
    0x00021094 ldr.w lr, [pc, 0x1b4]                                                                                                 |     
    0x00021098 movs r5, 0                                                                                                            |     r5 = 0;
    0x0002109a ldr.w sb, [sp, 0x6c]                                                                                                  |     sb = var_6ch;
    0x0002109e ldr r2, [r1, r2]                                                                                                      |     
    0x000210a0 add lr, pc                                                                                                            |     lr = 0x422f0;
    0x000210a2 ldr.w r8, [pc, 0x1ac]                                                                                                 |     r8 = *(0x00021250);
    0x000210a6 ldr r2, [r2]                                                                                                          |     r2 = *(0x422da);
    0x000210a8 str r2, [sp, 0x3c]                                                                                                    |     var_3ch = r2;
    0x000210aa mov.w r2, 0                                                                                                           |     r2 = 0;
    0x000210ae ldm.w lr!, {r0, r1, r2, r3}                                                                                           |     r0 = *(lr!);
                                                                                                                                     |     r1 = *((lr! + 4));
                                                                                                                                     |     r2 = *((lr! + 8));
                                                                                                                                     |     r3 = *((lr! + 12));
    0x000210b2 add r8, pc                                                                                                            |     r8 += pc;
    0x000210b4 stm.w ip!, {r0, r1, r2, r3}                                                                                           |     *(ip!) = r0;
                                                                                                                                     |     *((ip! + 4)) = r1;
                                                                                                                                     |     *((ip! + 8)) = r2;
                                                                                                                                     |     *((ip! + 12)) = r3;
    0x000210b8 ldm.w lr!, {r0, r1, r2, r3}                                                                                           |     r0 = *(lr!);
                                                                                                                                     |     r1 = *((lr! + 4));
                                                                                                                                     |     r2 = *((lr! + 8));
                                                                                                                                     |     r3 = *((lr! + 12));
    0x000210bc stm.w ip!, {r0, r1, r2, r3}                                                                                           |     *(ip!) = r0;
                                                                                                                                     |     *((ip! + 4)) = r1;
                                                                                                                                     |     *((ip! + 8)) = r2;
                                                                                                                                     |     *((ip! + 12)) = r3;
    0x000210c0 ldm.w lr, {r0, r1, r2, r3}                                                                                            |     r0 = *(lr);
                                                                                                                                     |     r1 = *((lr + 4));
                                                                                                                                     |     r2 = *((lr + 8));
                                                                                                                                     |     r3 = *((lr + 12));
    0x000210c4 stm.w ip, {r0, r1, r2, r3}                                                                                            |     *(ip) = r0;
                                                                                                                                     |     *((ip + 4)) = r1;
                                                                                                                                     |     *((ip + 8)) = r2;
                                                                                                                                     |     *((ip + 12)) = r3;
    0x000210c8 add r1, sp, 0x1c                                                                                                      |     r1 += var_1ch_2;
    0x000210ca ldr.w r3, [fp]                                                                                                        |     r3 = *(fp);
    0x000210ce mov r0, r4                                                                                                            |     r0 = r4;
    0x000210d0 strd r3, r5, [r4, 0x30]                                                                                               |     __asm ("strd r3, r5, [r4, 0x30]");
    0x000210d4 ldr.w r3, [fp, 4]                                                                                                     |     r3 = *(arg_4h);
    0x000210d8 strd r5, r5, [fp]                                                                                                     |     __asm ("strd r5, r5, [fp]");
    0x000210dc str r5, [r4, 0x40]                                                                                                    |     *((r4 + 0x40)) = r5;
    0x000210de str r3, [r4, 0x34]                                                                                                    |     *((r4 + 0x34)) = r3;
    0x000210e0 str r5, [r4, 0x44]                                                                                                    |     *((r4 + 0x44)) = r5;
    0x000210e2 str r5, [r4, 0x48]                                                                                                    |     *((r4 + 0x48)) = r5;
    0x000210e4 str r5, [r4, 0x4c]                                                                                                    |     *((r4 + 0x4c)) = r5;
    0x000210e6 strd r5, r5, [r4, 0x38]                                                                                               |     __asm ("strd r5, r5, [r4, 0x38]");
    0x000210ea ldr.w r3, [sl]                                                                                                        |     r3 = *(sl);
    0x000210ee str.w r5, [sl]                                                                                                        |     __asm ("str.w r5, [sl]");
    0x000210f2 str r3, [sp, 0x1c]                                                                                                    |     var_1ch_2 = r3;
    0x000210f4 ldr.w r3, [sl, 4]                                                                                                     |     r3 = *((sl + 4));
    0x000210f8 str.w r5, [sl, 4]                                                                                                     |     __asm ("str.w r5, [sl, 4]");
    0x000210fc str r3, [sp, 0x20]                                                                                                    |     var_20h_2 = r3;
    0x000210fe blx 0xedd8                                                                                                            |     fcn_0000edd8 ();
    0x00021102 ldr r5, [sp, 0x20]                                                                                                    |     r5 = var_20h_2;
                                                                                                                                     |     if (r5 == 0) {
    0x00021104 cbz r5, 0x2111e                                                                                                       |         goto label_0;
                                                                                                                                     |     }
    0x00021106 ldr r3, [pc, 0x14c]                                                                                                   |     r3 = *(0x21256);
    0x00021108 ldr.w sl, [r8, r3]                                                                                                    |     sl = *((r8 + r3));
    0x0002110c ldrb.w r3, [sl]                                                                                                       |     r3 = *(sl);
    0x00021110 cmp r3, 0                                                                                                             |     
                                                                                                                                     |     if (r3 == 0) {
    0x00021112 beq 0x2118e                                                                                                           |         goto label_4;
                                                                                                                                     |     }
    0x00021114 ldr r3, [r5, 4]                                                                                                       |     r3 = *((r5 + 4));
    0x00021116 subs r2, r3, 1                                                                                                        |     r2 = r3 - 1;
    0x00021118 str r2, [r5, 4]                                                                                                       |     *((r5 + 4)) = r2;
                                                                                                                                     | label_1:
    0x0002111a cmp r3, 1                                                                                                             |     
    0x0002111c beq 0x2116c                                                                                                           |     
                                                                                                                                     |     while (r3 != 1) {
                                                                                                                                     | label_0:
    0x0002111e cmp r7, 2                                                                                                             |         
                                                                                                                                     |         if (r7 > 2) {
    0x00021120 bhi 0x211ee                                                                                                           |             goto label_5;
                                                                                                                                     |         }
    0x00021122 ldr r3, [sp, 4]                                                                                                       |         r3 = *(arg_4h);
    0x00021124 cmp sb, r6                                                                                                            |         
    0x00021126 str r7, [r4, 0x10]                                                                                                    |         *((r4 + 0x10)) = r7;
    0x00021128 str r3, [r4, 0x14]                                                                                                    |         *((r4 + 0x14)) = r3;
                                                                                                                                     |         if (sb != r6) {
    0x0002112a beq 0x21144                                                                                                           |             
    0x0002112c mov r0, r6                                                                                                            |             r0 = r6;
    0x0002112e blx 0xedb4                                                                                                            |             fcn_0000edb4 ();
    0x00021132 add r5, sp, 8                                                                                                         |             r5 += var_8h_3;
    0x00021134 mov r1, sb                                                                                                            |             r1 = sb;
    0x00021136 mov r0, r5                                                                                                            |             r0 = r5;
    0x00021138 blx 0xeb24                                                                                                            |             r0 = fcn_0000eb24 ();
    0x0002113c ldm.w r5, {r0, r1, r2, r3}                                                                                            |             r0 = *(r5);
                                                                                                                                     |             r1 = *((r5 + 4));
                                                                                                                                     |             r2 = *((r5 + 8));
                                                                                                                                     |             r3 = *((r5 + 12));
    0x00021140 stm.w r6, {r0, r1, r2, r3}                                                                                            |             *(r6) = r0;
                                                                                                                                     |             *((r6 + 4)) = r1;
                                                                                                                                     |             *((r6 + 8)) = r2;
                                                                                                                                     |             *((r6 + 12)) = r3;
                                                                                                                                     |         }
    0x00021144 add.w r5, r4, 0x20                                                                                                    |         r5 = r4 + 0x20;
    0x00021148 ldm.w r6, {r0, r1, r2, r3}                                                                                            |         r0 = *(r6);
                                                                                                                                     |         r1 = *((r6 + 4));
                                                                                                                                     |         r2 = *((r6 + 8));
                                                                                                                                     |         r3 = *((r6 + 12));
    0x0002114c stm.w r5, {r0, r1, r2, r3}                                                                                            |         *(r5) = r0;
                                                                                                                                     |         *((r5 + 4)) = r1;
                                                                                                                                     |         *((r5 + 8)) = r2;
                                                                                                                                     |         *((r5 + 12)) = r3;
    0x00021150 ldr r2, [pc, 0x104]                                                                                                   |         
    0x00021152 ldr r3, [pc, 0xf4]                                                                                                    |         r3 = *(0x2124a);
    0x00021154 add r2, pc                                                                                                            |         r2 = 0x423b0;
    0x00021156 ldr r3, [r2, r3]                                                                                                      |         r3 = *(0x423b0);
    0x00021158 ldr r2, [r3]                                                                                                          |         r2 = *(0x423b0);
    0x0002115a ldr r3, [sp, 0x3c]                                                                                                    |         r3 = var_3ch;
    0x0002115c eors r2, r3                                                                                                           |         r2 ^= r3;
    0x0002115e mov.w r3, 0                                                                                                           |         r3 = 0;
                                                                                                                                     |         if (r2 != r3) {
    0x00021162 bne 0x211c4                                                                                                           |             goto label_6;
                                                                                                                                     |         }
    0x00021164 mov r0, r4                                                                                                            |         r0 = r4;
    0x00021166 add sp, 0x44                                                                                                          |         
    0x00021168 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                            |         
    0x0002116c ldr r3, [r5]                                                                                                          |         r3 = *(r5);
    0x0002116e mov r0, r5                                                                                                            |         r0 = r5;
    0x00021170 ldr r3, [r3, 8]                                                                                                       |         r3 = *((r3 + 8));
    0x00021172 blx r3                                                                                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00021174 ldrb.w r3, [sl]                                                                                                       |         r3 = *(sl);
                                                                                                                                     |         if (r3 == 0) {
    0x00021178 cbz r3, 0x211a8                                                                                                       |             goto label_7;
                                                                                                                                     |         }
    0x0002117a ldr r3, [r5, 8]                                                                                                       |         r3 = *((r5 + 8));
    0x0002117c subs r2, r3, 1                                                                                                        |         r2 = r3 - 1;
    0x0002117e str r2, [r5, 8]                                                                                                       |         *((r5 + 8)) = r2;
                                                                                                                                     | label_2:
    0x00021180 cmp r3, 1                                                                                                             |         
    0x00021182 bne 0x2111e                                                                                                           |         
                                                                                                                                     |     }
    0x00021184 ldr r3, [r5]                                                                                                          |     r3 = *(r5);
    0x00021186 mov r0, r5                                                                                                            |     r0 = r5;
    0x00021188 ldr r3, [r3, 0xc]                                                                                                     |     r3 = *((r3 + 0xc));
    0x0002118a blx r3                                                                                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0002118c b 0x2111e                                                                                                             |     goto label_0;
                                                                                                                                     | label_4:
    0x0002118e adds r2, r5, 4                                                                                                        |     r2 = r5 + 4;
    0x00021190 dmb ish                                                                                                               |     __asm ("dmb ish");
                                                                                                                                     |     do {
    0x00021194 ldrex r3, [r2]                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x00021198 subs r1, r3, 1                                                                                                        |         r1 = r3 - 1;
    0x0002119a strex r0, r1, [r2]                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x0002119e cmp r0, 0                                                                                                             |         
    0x000211a0 bne 0x21194                                                                                                           |         
                                                                                                                                     |     } while (r0 != 0);
    0x000211a2 dmb ish                                                                                                               |     __asm ("dmb ish");
    0x000211a6 b 0x2111a                                                                                                             |     goto label_1;
                                                                                                                                     | label_7:
    0x000211a8 add.w r2, r5, 8                                                                                                       |     r2 = r5 + 8;
    0x000211ac dmb ish                                                                                                               |     __asm ("dmb ish");
                                                                                                                                     |     do {
    0x000211b0 ldrex r3, [r2]                                                                                                        |         __asm ("ldrex r3, [r2]");
    0x000211b4 subs r1, r3, 1                                                                                                        |         r1 = r3 - 1;
    0x000211b6 strex r0, r1, [r2]                                                                                                    |         __asm ("strex r0, r1, [r2]");
    0x000211ba cmp r0, 0                                                                                                             |         
    0x000211bc bne 0x211b0                                                                                                           |         
                                                                                                                                     |     } while (r0 != 0);
    0x000211be dmb ish                                                                                                               |     __asm ("dmb ish");
    0x000211c2 b 0x21180                                                                                                             |     goto label_2;
                                                                                                                                     | label_6:
    0x000211c4 blx 0xea48                                                                                                            |     fcn_0000ea48 ();
                                                                                                                                     |     do {
                                                                                                                                     | label_3:
    0x000211c8 mov r0, r6                                                                                                            |         r0 = r6;
    0x000211ca blx 0xedb4                                                                                                            |         fcn_0000edb4 ();
    0x000211ce ldr r0, [r4, 0x3c]                                                                                                    |         r0 = *((r4 + 0x3c));
                                                                                                                                     |         if (r0 != 0) {
    0x000211d0 cbz r0, 0x211d6                                                                                                       |             
    0x000211d2 bl 0x18a84                                                                                                            |             fcn_00018a84 (r0);
                                                                                                                                     |         }
    0x000211d6 ldr r0, [r4, 0x34]                                                                                                    |         r0 = *((r4 + 0x34));
                                                                                                                                     |         if (r0 != 0) {
    0x000211d8 cbz r0, 0x211de                                                                                                       |             
    0x000211da bl 0x18a84                                                                                                            |             r0 = fcn_00018a84 (r0);
                                                                                                                                     |         }
    0x000211de blx 0xea54                                                                                                            |         fcn_0000ea54 ();
    0x000211e2 ldr r0, [sp, 0x20]                                                                                                    |         r0 = var_20h_2;
    0x000211e4 cmp r0, 0                                                                                                             |         
    0x000211e6 beq 0x211c8                                                                                                           |         
                                                                                                                                     |     } while (r0 == 0);
    0x000211e8 bl 0x18a84                                                                                                            |     fcn_00018a84 (r0);
    0x000211ec b 0x211c8                                                                                                             |     goto label_3;
                                                                                                                                     | label_5:
    0x000211ee movs r0, 0x28                                                                                                         |     r0 = 0x28;
    0x000211f0 add r7, sp, 0x24                                                                                                      |     r7 += var_24h_2;
    0x000211f2 blx 0xe764                                                                                                            |     fcn_0000e764 ();
    0x000211f6 ldr r1, [pc, 0x64]                                                                                                    |     
    0x000211f8 mov r5, r0                                                                                                            |     r5 = r0;
    0x000211fa mov r0, r7                                                                                                            |     r0 = r7;
    0x000211fc add r1, pc                                                                                                            |     r1 = 0x4245e;
    0x000211fe bl 0xeef8                                                                                                             |     entry0 (r0, r1);
    0x00021202 mov r2, r7                                                                                                            |     r2 = r7;
    0x00021204 mvn r1, 8                                                                                                             |     r1 = ~8;
    0x00021208 mov r0, r5                                                                                                            |     r0 = r5;
    0x0002120a bl 0x21618                                                                                                            |     fcn_00021618 (r0, r1, r2);
    0x0002120e ldr r0, [sp, 0x24]                                                                                                    |     r0 = var_24h_2;
    0x00021210 add r3, sp, 0x2c                                                                                                      |     r3 += var_2ch;
    0x00021212 cmp r0, r3                                                                                                            |     
                                                                                                                                     |     if (r0 != r3) {
    0x00021214 beq 0x2121a                                                                                                           |         
    0x00021216 blx 0xe9a4                                                                                                            |         fcn_0000e9a4 ();
                                                                                                                                     |     }
    0x0002121a ldr r3, [pc, 0x44]                                                                                                    |     r3 = *(0x21262);
    0x0002121c mov r0, r5                                                                                                            |     r0 = r5;
    0x0002121e ldr.w r2, [r8, r3]                                                                                                    |     r2 = *((r8 + r3));
    0x00021222 ldr r3, [pc, 0x40]                                                                                                    |     r3 = *(0x21266);
    0x00021224 ldr.w r1, [r8, r3]                                                                                                    |     r1 = *((r8 + r3));
    0x00021228 blx 0xed0c                                                                                                            |     fcn_0000ed0c ();
    0x0002122c ldr r0, [sp, 0x24]                                                                                                    |     r0 = var_24h_2;
    0x0002122e add r3, sp, 0x2c                                                                                                      |     r3 += var_2ch;
    0x00021230 cmp r0, r3                                                                                                            |     
                                                                                                                                     |     if (r0 != r3) {
    0x00021232 beq 0x21238                                                                                                           |         
    0x00021234 blx 0xe9a4                                                                                                            |         fcn_0000e9a4 ();
                                                                                                                                     |     }
    0x00021238 mov r0, r5                                                                                                            |     r0 = r5;
    0x0002123a blx 0xe878                                                                                                            |     fcn_0000e878 ();
    0x0002123e b 0x211c8                                                                                                             |     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;
                                                                                                                                     | }

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