[*] Binary protection state of libpaho-mqtt3as.so.1.3.9

  
  	Partial RELRO  No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of libpaho-mqtt3as.so.1.3.9

    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x7784 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.00007784 ()          | void fcn_00007784 (int32_t arg1) {
                                     |     int32_t var_0h;
                                     |     int32_t var_8h;
                                     |     char * s;
                                     |     int32_t var_1ch;
                                     |     r0 = arg1;
    0x00007784 push {r4, r5, lr}     |     
    0x00007788 mov r5, r0            |     r5 = r0;
    0x0000778c ldr r0, [pc, 0xf4]    |     
    0x00007790 sub sp, sp, 0x1c      |     
    0x00007794 add r0, pc, r0        |     r0 = pc + r0;
    0x00007798 mov r3, 0             |     r3 = 0;
    0x0000779c mov r2, 3             |     r2 = 3;
    0x000077a0 mov r1, 0xe4          |     r1 = 0xe4;
    0x000077a4 add r0, r0, 0x2d      |     r0 = 0x78b1;
    0x000077a8 str r3, [sp, 8]       |     var_8h = r3;
    0x000077ac bl 0x1e0d4            |     fcn_0001e0d4 (r0, r1);
    0x000077b0 ldr r3, [r5, 0x50]    |     r3 = *((r5 + 0x50));
    0x000077b4 add r4, sp, 0xc       |     r4 += s;
    0x000077b8 ldr r3, [r3, 0xc]     |     r3 = *((r3 + 0xc));
    0x000077bc ldr r3, [r3, 0x9c]    |     r3 = *((r3 + 0x9c));
    0x000077c0 cmp r3, 4             |     
    0x000077c4 ldr r3, [r5, 0x54]    |     r3 = *((r5 + 0x54));
    0x000077c8 str r3, [sp]          |     *(sp) = r3;
                                     |     if (r3 <= 4) {
    0x000077cc ble 0x783c            |         goto label_2;
                                     |     }
    0x000077d0 ldr r3, [pc, 0xb4]    |     r3 = "_";
    0x000077d4 ldr r2, [pc, 0xb4]    |     r2 = *(0x788c);
    0x000077d8 add r3, pc, r3        |     r3 = pc + r3;
    0x000077dc add r2, pc, r2        |     r2 = pc + r2;
                                     |     do {
    0x000077e0 mov r1, 0xb           |         r1 = 0xb;
    0x000077e4 mov r0, r4            |         r0 = r4;
    0x000077e8 bl 0x3638             |         r0 = snprintf (r0, r1, r2, r3)
    0x000077ec cmp r0, 0xa           |         
                                     |         if (r0 <= 0xa) {
    0x000077f0 ble 0x7850            |             goto label_3;
                                     |         }
    0x000077f4 ldr r2, [pc, 0x98]    |         r2 = *(0x7890);
    0x000077f8 mvn r3, 1             |         r3 = ~1;
    0x000077fc str r3, [sp, 8]       |         var_8h = r3;
    0x00007800 add r2, pc, r2        |         r2 = pc + r2;
    0x00007804 mov r3, r0            |         r3 = r0;
                                     | label_1:
    0x00007808 mov r1, 0             |         r1 = 0;
    0x0000780c mov r0, 5             |         r0 = 5;
    0x00007810 bl 0x16364            |         fcn_00016364 (r0, r1, r2, r3);
                                     | label_0:
    0x00007814 ldr r0, [pc, 0x7c]    |         
    0x00007818 mov r3, 3             |         r3 = 3;
    0x0000781c add r0, pc, r0        |         r0 = pc + r0;
    0x00007820 add r2, sp, 8         |         r2 += var_8h;
    0x00007824 mov r1, 0xf0          |         r1 = 0xf0;
    0x00007828 add r0, r0, 0x2d      |         r0 = 0x78c1;
    0x0000782c bl 0x1e1bc            |         fcn_0001e1bc (r0, r1);
    0x00007830 ldr r0, [sp, 8]       |         r0 = var_8h;
    0x00007834 add sp, sp, 0x1c      |         
    0x00007838 pop {r4, r5, pc}      |         
                                     | label_2:
    0x0000783c ldr r3, [pc, 0x58]    |         r3 = *(0x7898);
    0x00007840 ldr r2, [pc, 0x58]    |         r2 = *(0x789c);
    0x00007844 add r3, pc, r3        |         r3 = pc + r3;
    0x00007848 add r2, pc, r2        |         r2 = pc + r2;
    0x0000784c b 0x77e0              |         
                                     |     } while (1);
                                     | label_3:
    0x00007850 ldr r3, [r5, 0x50]    |     r3 = *((r5 + 0x50));
    0x00007854 mov r1, r4            |     r1 = r4;
    0x00007858 ldr r3, [r3, 0xc]     |     r3 = *((r3 + 0xc));
    0x0000785c ldr r2, [r3, 0x84]    |     r2 = *((r3 + 0x84));
    0x00007860 ldr r0, [r3, 0x80]    |     r0 = *((r3 + 0x80));
    0x00007864 ldr r2, [r2, 0x14]    |     r2 = *((r2 + 0x14));
    0x00007868 blx r2                |     r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000786c cmp r0, 0             |     
    0x00007870 mov r3, r0            |     r3 = r0;
    0x00007874 str r0, [sp, 8]       |     var_8h = r0;
                                     |     if (r0 == 0) {
    0x00007878 beq 0x7814            |         goto label_0;
                                     |     }
    0x0000787c ldr r2, [pc, 0x20]    |     r2 = *(0x78a0);
    0x00007880 add r2, pc, r2        |     r2 = pc + r2;
    0x00007884 b 0x7808              |     goto label_1;
                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x8430 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00008430 ()                                  | void fcn_00008430 (int32_t arg_0h, int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     char * src;
                                                             |     int32_t var_1h;
                                                             |     int32_t var_40h;
                                                             |     int32_t var_44h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00008430 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00008434 ldr fp, [pc, 0x89c]                           |     fp = *(0x00008cd8);
    0x00008438 mov r4, r0                                    |     r4 = r0;
    0x0000843c ldr r0, [pc, 0x898]                           |     
    0x00008440 sub sp, sp, 0x44                              |     
    0x00008444 add r0, pc, r0                                |     r0 = pc + r0;
    0x00008448 mov r3, 0                                     |     r3 = 0;
    0x0000844c mov r2, 3                                     |     r2 = 3;
    0x00008450 add r0, r0, 0xf0                              |     r0 = 0x8dc8;
    0x00008454 mov r5, r1                                    |     r5 = r1;
    0x00008458 ldr r1, [pc, 0x880]                           |     r1 = *(0x8cdc);
    0x0000845c str r3, [sp, 0x28]                            |     var_28h = r3;
    0x00008460 bl 0x1e0d4                                    |     fcn_0001e0d4 (r0, r1);
    0x00008464 ldr r3, [pc, 0x878]                           |     r3 = *(0x8ce0);
    0x00008468 add fp, pc, fp                                |     
    0x0000846c ldr r3, [fp, r3]                              |     r3 = *((fp + r3));
    0x00008470 ldr r0, [r3]                                  |     r0 = *(0x8ce0);
    0x00008474 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00008478 bl 0x7c18                                     |     fcn_00007c18 ();
    0x0000847c ldr r3, [r4]                                  |     r3 = *(r4);
    0x00008480 cmp r3, 1                                     |     
                                                             |     if (r3 == 1) {
    0x00008484 bne 0x849c                                    |         
    0x00008488 ldr r3, [r4, 0x50]                            |         r3 = *((r4 + 0x50));
    0x0000848c ldr r3, [r3, 0xc]                             |         r3 = *((r3 + 0xc));
    0x00008490 ldrh r3, [r3, 0x10]                           |         r3 = *((r3 + 0x10));
    0x00008494 tst r3, 0x3c0                                 |         
                                                             |         if ((r3 & 0x3c0) != 0) {
    0x00008498 bne 0x84b4                                    |             goto label_12;
                                                             |         }
                                                             |     }
    0x0000849c add r6, sp, 0x20                              |     r6 += var_20h;
    0x000084a0 mov r0, r6                                    |     r0 = r6;
    0x000084a4 bl 0xe8f0                                     |     r0 = fcn_0000e8f0 (r0);
    0x000084a8 ldm r6, {r0, r1}                              |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
    0x000084ac add r3, r4, 0x1c                              |     r3 = r4 + 0x1c;
    0x000084b0 stm r3, {r0, r1}                              |     *(r3) = r0;
                                                             |     *((r3 + 4)) = r1;
                                                             | label_12:
    0x000084b4 ldr r2, [pc, 0x82c]                           |     r2 = *(0x8ce4);
    0x000084b8 ldr r3, [r4]                                  |     r3 = *(r4);
    0x000084bc ldr r2, [fp, r2]                              |     r2 = *((fp + r2));
    0x000084c0 cmp r3, 1                                     |     
    0x000084c4 str r2, [sp, 8]                               |     var_8h = r2;
                                                             |     if (r3 != 1) {
    0x000084c8 beq 0x84e0                                    |         
    0x000084cc cmp r3, 0xe                                   |         
                                                             |         if (r3 != 0xe) {
    0x000084d0 bne 0x8534                                    |             goto label_13;
                                                             |         }
    0x000084d4 ldr r3, [r4, 0x34]                            |         r3 = *((r4 + 0x34));
    0x000084d8 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000084dc beq 0x8534                                    |             goto label_13;
                                                             |         }
                                                             |     }
    0x000084e0 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x000084e4 ldr r0, [r3]                                  |     r0 = *(r3);
    0x000084e8 ldr r3, [r0]                                  |     r3 = *(r0);
    0x000084ec mov r2, r3                                    |     r2 = r3;
                                                             | label_0:
    0x000084f0 cmp r2, 0                                     |     
    0x000084f4 bne 0x8508                                    |     
                                                             |     while (ip != 1) {
    0x000084f8 mov r2, r5                                    |         r2 = r5;
    0x000084fc mov r1, r4                                    |         r1 = r4;
    0x00008500 bl 0x1ae54                                    |         fcn_0001ae54 (r0, r1);
    0x00008504 b 0x8780                                      |         goto label_11;
    0x00008508 ldr r1, [r2, 8]                               |         r1 = *((r2 + 8));
    0x0000850c ldr ip, [r1]                                  |         ip = *(r1);
    0x00008510 cmp ip, 1                                     |         
    0x00008514 cmpne ip, 0xe                                 |         __asm ("cmpne ip, 0xe");
    0x00008518 bne 0x84f8                                    |         
                                                             |     }
    0x0000851c ldr ip, [r1, 0x50]                            |     ip = *((r1 + 0x50));
    0x00008520 ldr r1, [r4, 0x50]                            |     r1 = *((r4 + 0x50));
    0x00008524 cmp ip, r1                                    |     
                                                             |     if (ip == r1) {
    0x00008528 beq 0x8c8c                                    |         goto label_14;
                                                             |     }
    0x0000852c ldr r2, [r2]                                  |     r2 = *(r2);
    0x00008530 b 0x84f0                                      |     goto label_0;
                                                             | label_13:
    0x00008534 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00008538 mov r2, r5                                    |     r2 = r5;
    0x0000853c ldr r0, [r3]                                  |     r0 = *(r3);
    0x00008540 mov r1, r4                                    |     r1 = r4;
    0x00008544 bl 0x1ae08                                    |     fcn_0001ae08 (r0, r1);
    0x00008548 ldr sb, [r4, 0x50]                            |     sb = *((r4 + 0x50));
    0x0000854c ldr r3, [sb, 0xc]                             |     r3 = *((sb + 0xc));
    0x00008550 ldr r3, [r3, 0x84]                            |     r3 = *((r3 + 0x84));
    0x00008554 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00008558 beq 0x8c08                                    |         goto label_15;
                                                             |     }
    0x0000855c ldr r3, [r4]                                  |     r3 = *(r4);
    0x00008560 cmp r3, 3                                     |     
                                                             |     if (r3 == 3) {
    0x00008564 bne 0x8598                                    |         
    0x00008568 ldr r3, [sb, 0xf0]                            |         r3 = *((sb + 0xf0));
    0x0000856c cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00008570 beq 0x8598                                    |             goto label_16;
                                                             |         }
    0x00008574 ldr r2, [r3, 4]                               |         r2 = *((r3 + 4));
    0x00008578 cmp r2, 1                                     |         
                                                             |         if (r2 <= 1) {
    0x0000857c ble 0x8598                                    |             goto label_16;
                                                             |         }
    0x00008580 ldr r3, [r3, 0x20]                            |         r3 = *((r3 + 0x20));
    0x00008584 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00008588 bne 0x8598                                    |             goto label_16;
                                                             |         }
    0x0000858c ldr r3, [r4, 0x40]                            |         r3 = *((r4 + 0x40));
    0x00008590 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00008594 beq 0x8c14                                    |             goto label_17;
                                                             |         }
                                                             |     }
                                                             | label_16:
    0x00008598 ldr r0, [pc, 0x74c]                           |     
    0x0000859c mov r2, 3                                     |     r2 = 3;
    0x000085a0 add r0, pc, r0                                |     r0 = pc + r0;
    0x000085a4 add r0, r0, 0x104                             |     r0 = 0x8dec;
    0x000085a8 mov r7, 0                                     |     r7 = 0;
    0x000085ac ldr r1, [pc, 0x73c]                           |     r1 = *(0x8cec);
    0x000085b0 add r0, r0, 1                                 |     r0++;
    0x000085b4 str r7, [sp, 0x2c]                            |     var_2ch = r7;
    0x000085b8 bl 0x1e0d4                                    |     fcn_0001e0d4 (r0, r1);
    0x000085bc ldr r2, [r4]                                  |     r2 = *(r4);
    0x000085c0 ldr r3, [sb, 0xc]                             |     r3 = *((sb + 0xc));
    0x000085c4 cmp r2, 8                                     |     
                                                             |     if (r2 != 8) {
    0x000085c8 beq 0x8698                                    |         
    0x000085cc cmp r2, 0xa                                   |         
                                                             |         if (r2 == 0xa) {
    0x000085d0 beq 0x89fc                                    |             goto label_18;
                                                             |         }
    0x000085d4 cmp r2, 3                                     |         
                                                             |         if (r2 != 3) {
    0x000085d8 bne 0x8ab8                                    |             goto label_19;
                                                             |         }
    0x000085dc ldr r3, [r3, 0x9c]                            |         r3 = *((r3 + 0x9c));
    0x000085e0 ldr r5, [pc, 0x70c]                           |         r5 = *(0x8cf0);
    0x000085e4 cmp r3, 5                                     |         
                                                             |         if (r3 >= 5) {
    0x000085e8 movlt sl, 7                                   |             sl = 7;
                                                             |         }
                                                             |         if (r3 < 5) {
    0x000085ec movge sl, 8                                   |             sl = 8;
                                                             |         }
    0x000085f0 lsl r7, sl, 2                                 |         r7 = sl << 2;
    0x000085f4 add r5, pc, r5                                |         r5 = pc + r5;
    0x000085f8 mov r2, r7                                    |         r2 = r7;
    0x000085fc mov r1, 0x150                                 |         r1 = 0x150;
    0x00008600 mov r0, r5                                    |         r0 = r5;
    0x00008604 bl 0x1e7a4                                    |         r0 = fcn_0001e7a4 (r0, r1);
    0x00008608 subs r6, r0, 0                                |         r6 = r0 - 0;
                                                             |         if (r6 == r0) {
    0x0000860c beq 0x86d4                                    |             goto label_3;
                                                             |         }
    0x00008610 mov r0, r5                                    |         r0 = r5;
    0x00008614 mov r2, r7                                    |         r2 = r7;
    0x00008618 ldr r1, [pc, 0x6d8]                           |         r1 = *(0x8cf4);
    0x0000861c bl 0x1e7a4                                    |         r0 = fcn_0001e7a4 (r0, r1);
    0x00008620 subs r5, r0, 0                                |         r5 = r0 - 0;
                                                             |         if (r5 == r0) {
    0x00008624 beq 0x86d4                                    |             goto label_3;
                                                             |         }
    0x00008628 mov r7, 4                                     |         r7 = 4;
    0x0000862c add r3, r4, 0x14                              |         r3 = r4 + 0x14;
    0x00008630 str r4, [r5]                                  |         *(r5) = r4;
    0x00008634 str r7, [r6]                                  |         *(r6) = r7;
    0x00008638 str r3, [r5, 4]                               |         *((r5 + 4)) = r3;
    0x0000863c str r7, [r6, 4]                               |         *((r6 + 4)) = r7;
    0x00008640 ldr r3, [r4, 0x34]                            |         r3 = *((r4 + 0x34));
    0x00008644 mov r8, 7                                     |         r8 = 7;
    0x00008648 str r3, [r5, 8]                               |         *((r5 + 8)) = r3;
    0x0000864c ldr r0, [r4, 0x34]                            |         r0 = *((r4 + 0x34));
    0x00008650 bl 0x3608                                     |         strlen (r0);
    0x00008654 add r3, r4, 0x38                              |         r3 = r4 + 0x38;
    0x00008658 add r0, r0, 1                                 |         r0++;
    0x0000865c str r0, [r6, 8]                               |         *((r6 + 8)) = r0;
    0x00008660 str r3, [r5, 0xc]                             |         *((r5 + 0xc)) = r3;
    0x00008664 str r7, [r6, 0xc]                             |         *((r6 + 0xc)) = r7;
    0x00008668 ldr r3, [r4, 0x3c]                            |         r3 = *((r4 + 0x3c));
    0x0000866c str r3, [r5, 0x10]                            |         *((r5 + 0x10)) = r3;
    0x00008670 ldr r3, [r4, 0x38]                            |         r3 = *((r4 + 0x38));
    0x00008674 str r3, [r6, 0x10]                            |         *((r6 + 0x10)) = r3;
    0x00008678 add r3, r4, 0x40                              |         r3 = r4 + 0x40;
    0x0000867c str r3, [r5, 0x14]                            |         *((r5 + 0x14)) = r3;
    0x00008680 add r3, r4, 0x44                              |         r3 = r4 + 0x44;
    0x00008684 str r7, [r6, 0x14]                            |         *((r6 + 0x14)) = r7;
    0x00008688 str r3, [r5, 0x18]                            |         *((r5 + 0x18)) = r3;
    0x0000868c str r7, [r6, 0x18]                            |         *((r6 + 0x18)) = r7;
    0x00008690 mov r7, 1                                     |         r7 = 1;
    0x00008694 b 0x883c                                      |         goto label_6;
                                                             |     }
    0x00008698 ldr r3, [r3, 0x9c]                            |     r3 = *((r3 + 0x9c));
    0x0000869c ldr r5, [pc, 0x658]                           |     r5 = *(0x8cf8);
    0x000086a0 cmp r3, 5                                     |     
    0x000086a4 ldr r3, [r4, 0x34]                            |     r3 = *((r4 + 0x34));
                                                             |     if (r3 >= 5) {
    0x000086a8 movlt sl, 3                                   |         sl = 3;
                                                             |     }
                                                             |     if (r3 < 5) {
    0x000086ac movge sl, 4                                   |         sl = 4;
                                                             |     }
    0x000086b0 add sl, sl, r3, lsl 1                         |     sl += (r3 << 1);
    0x000086b4 lsl r8, sl, 2                                 |     r8 = sl << 2;
    0x000086b8 add r5, pc, r5                                |     r5 = pc + r5;
    0x000086bc mov r2, r8                                    |     r2 = r8;
    0x000086c0 ldr r1, [pc, 0x638]                           |     r1 = *(0x8cfc);
    0x000086c4 mov r0, r5                                    |     r0 = r5;
    0x000086c8 bl 0x1e7a4                                    |     r0 = fcn_0001e7a4 (r0, r1);
    0x000086cc subs r6, r0, 0                                |     r6 = r0 - 0;
    0x000086d0 bne 0x87e0                                    |     
                                                             |     while (r5 == r0) {
                                                             | label_3:
    0x000086d4 mvn r3, 0x62                                  |         r3 = ~0x62;
    0x000086d8 cmp r6, 0                                     |         
    0x000086dc str r3, [sp, 0x2c]                            |         var_2ch = r3;
                                                             |         if (r6 == 0) {
    0x000086e0 movne r5, 0                                   |             r5 = 0;
                                                             |         }
                                                             |         if (r6 != 0) {
    0x000086e4 bne 0x8b7c                                    |             goto label_20;
                                                             |         }
                                                             | label_1:
    0x000086e8 ldr r0, [pc, 0x614]                           |         
    0x000086ec mov r3, 3                                     |         r3 = 3;
    0x000086f0 add r0, pc, r0                                |         r0 = pc + r0;
    0x000086f4 add r0, r0, 0x104                             |         r0 = 0x8e04;
    0x000086f8 add r2, sp, 0x2c                              |         r2 += var_2ch;
    0x000086fc ldr r1, [pc, 0x604]                           |         r1 = *(0x8d04);
    0x00008700 add r0, r0, 1                                 |         r0++;
    0x00008704 bl 0x1e1bc                                    |         fcn_0001e1bc (r0, r1);
    0x00008708 ldr r2, [r4]                                  |         r2 = *(r4);
    0x0000870c ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00008710 cmp r2, 3                                     |         
    0x00008714 cmpeq r3, 0                                   |         __asm ("cmpeq r3, 0");
                                                             |         if (r2 != 3) {
    0x00008718 bne 0x8c08                                    |             goto label_15;
                                                             |         }
    0x0000871c ldr r2, [r4, 0x50]                            |         r2 = *((r4 + 0x50));
    0x00008720 mov r3, 1                                     |         r3 = 1;
    0x00008724 ldr r2, [r2, 0xc]                             |         r2 = *((r2 + 0xc));
    0x00008728 str r3, [r4, 0x58]                            |         *((r4 + 0x58)) = r3;
    0x0000872c ldr r2, [r2, 0x9c]                            |         r2 = *((r2 + 0x9c));
    0x00008730 ldr r3, [r4, 0x54]                            |         r3 = *((r4 + 0x54));
    0x00008734 cmp r2, 4                                     |         
    0x00008738 str r3, [sp]                                  |         *(sp) = r3;
    0x0000873c add r6, sp, 0x34                              |         r6 += src;
                                                             |         if (r2 <= 4) {
    0x00008740 ble 0x8b94                                    |             goto label_21;
                                                             |         }
    0x00008744 ldr r3, [pc, 0x5c0]                           |         r3 = *(0x8d08);
    0x00008748 ldr r2, [pc, 0x5c0]                           |         r2 = *(0x8d0c);
    0x0000874c add r3, pc, r3                                |         r3 = pc + r3;
    0x00008750 add r2, pc, r2                                |         r2 = pc + r2;
                                                             | label_10:
    0x00008754 mov r1, 0xb                                   |         r1 = 0xb;
    0x00008758 mov r0, r6                                    |         r0 = r6;
    0x0000875c bl 0x3638                                     |         r0 = snprintf (r0, r1, r2, r3)
    0x00008760 cmp r0, 0xa                                   |         
                                                             |         if (r0 <= 0xa) {
    0x00008764 ble 0x8ba8                                    |             goto label_22;
                                                             |         }
    0x00008768 ldr r2, [pc, 0x5a4]                           |         r2 = *(0x8d10);
    0x0000876c mov r3, r0                                    |         r3 = r0;
    0x00008770 add r2, pc, r2                                |         r2 = pc + r2;
    0x00008774 mov r1, 0                                     |         r1 = 0;
    0x00008778 mov r0, 5                                     |         r0 = 5;
    0x0000877c bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
                                                             | label_11:
    0x00008780 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00008784 ldr r0, [r3]                                  |         r0 = *(r3);
    0x00008788 bl 0x7c4c                                     |         fcn_00007c4c ();
    0x0000878c ldr r3, [pc, 0x584]                           |         r3 = *(0x8d14);
    0x00008790 ldr r3, [fp, r3]                              |         r3 = *((fp + r3));
    0x00008794 ldr r0, [r3]                                  |         r0 = *(0x8d14);
    0x00008798 bl 0x186dc                                    |         r0 = fcn_000186dc (r0);
    0x0000879c subs r3, r0, 0                                |         r3 = r0 - 0;
                                                             |         if (r3 != r0) {
    0x000087a0 beq 0x87b8                                    |             
    0x000087a4 ldr r2, [pc, 0x570]                           |             r2 = *(0x8d18);
    0x000087a8 mov r1, 0                                     |             r1 = 0;
    0x000087ac add r2, pc, r2                                |             r2 = pc + r2;
    0x000087b0 mov r0, 5                                     |             r0 = 5;
    0x000087b4 bl 0x16364                                    |             fcn_00016364 (r0, r1, r2, r3);
                                                             |         }
    0x000087b8 ldr r0, [pc, 0x560]                           |         
    0x000087bc mov r3, 3                                     |         r3 = 3;
    0x000087c0 add r0, pc, r0                                |         r0 = pc + r0;
    0x000087c4 add r2, sp, 0x28                              |         r2 += var_28h;
    0x000087c8 mov r1, 0x390                                 |         r1 = 0x390;
    0x000087cc add r0, r0, 0xf0                              |         r0 = 0x8e0c;
    0x000087d0 bl 0x1e1bc                                    |         fcn_0001e1bc (r0, r1);
    0x000087d4 ldr r0, [sp, 0x28]                            |         r0 = var_28h;
    0x000087d8 add sp, sp, 0x44                              |         
    0x000087dc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
    0x000087e0 mov r0, r5                                    |         r0 = r5;
    0x000087e4 mov r2, r8                                    |         r2 = r8;
    0x000087e8 ldr r1, [pc, 0x534]                           |         r1 = *(0x8d20);
    0x000087ec bl 0x1e7a4                                    |         r0 = fcn_0001e7a4 (r0, r1);
    0x000087f0 subs r5, r0, 0                                |         r5 = r0 - 0;
    0x000087f4 beq 0x86d4                                    |         
                                                             |     }
    0x000087f8 mov r1, 4                                     |     r1 = 4;
    0x000087fc add r3, r4, 0x14                              |     r3 = r4 + 0x14;
    0x00008800 str r4, [r5]                                  |     *(r5) = r4;
    0x00008804 str r1, [r6]                                  |     *(r6) = r1;
    0x00008808 str r3, [r5, 4]                               |     *((r5 + 4)) = r3;
    0x0000880c add r3, r4, 0x34                              |     r3 = r4 + 0x34;
    0x00008810 str r1, [r6, 4]                               |     *((r6 + 4)) = r1;
    0x00008814 add r2, r4, 0x40                              |     r2 = r4 + 0x40;
    0x00008818 str r3, [r5, 8]                               |     *((r5 + 8)) = r3;
    0x0000881c mov r8, 3                                     |     r8 = 3;
    0x00008820 mov r3, 0xc                                   |     r3 = 0xc;
    0x00008824 str r1, [r6, 8]                               |     *((r6 + 8)) = r1;
    0x00008828 str r2, [sp, 0x10]                            |     var_10h = r2;
                                                             | label_2:
    0x0000882c ldr r2, [r4, 0x34]                            |     r2 = *((r4 + 0x34));
    0x00008830 cmp r7, r2                                    |     
                                                             |     if (r7 < r2) {
    0x00008834 blt 0x8958                                    |         goto label_23;
                                                             |     }
                                                             | label_4:
    0x00008838 mov r7, 1                                     |     r7 = 1;
                                                             | label_6:
    0x0000883c ldr r3, [sb, 0xe8]                            |     r3 = *((sb + 0xe8));
    0x00008840 ldr r2, [pc, 0x4e0]                           |     r2 = *(0x8d24);
    0x00008844 add r3, r3, 1                                 |     r3++;
    0x00008848 cmp r3, r2                                    |     
                                                             |     if (r3 != r2) {
    0x0000884c moveq r3, 0                                   |         r3 = 0;
                                                             |     }
    0x00008850 str r3, [sb, 0xe8]                            |     *((sb + 0xe8)) = r3;
    0x00008854 ldr r3, [sb, 0xc]                             |     r3 = *((sb + 0xc));
    0x00008858 ldr r3, [r3, 0x9c]                            |     r3 = *((r3 + 0x9c));
    0x0000885c cmp r3, 4                                     |     
                                                             |     if (r3 > 4) {
    0x00008860 movle r7, 0                                   |         r7 = 0;
                                                             |     }
                                                             |     if (r3 <= 4) {
    0x00008864 andgt r7, r7, 1                               |         r7 &= 1;
                                                             |     }
    0x00008868 cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x0000886c beq 0x8acc                                    |         goto label_24;
                                                             |     }
    0x00008870 mov r3, 0                                     |     r3 = 0;
    0x00008874 str r3, [sp, 0x30]                            |     var_30h = r3;
    0x00008878 add r3, r4, 0x24                              |     r3 = r4 + 0x24;
    0x0000887c mov r0, r3                                    |     r0 = r3;
    0x00008880 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00008884 bl 0x1b370                                    |     fcn_0001b370 (r0);
    0x00008888 ldr r1, [pc, 0x49c]                           |     r1 = *(0x8d28);
    0x0000888c mov r2, r0                                    |     r2 = r0;
    0x00008890 mov r7, r0                                    |     r7 = r0;
    0x00008894 ldr r0, [pc, 0x494]                           |     r0 = *(0x8d2c);
    0x00008898 add r0, pc, r0                                |     r0 = pc + r0;
    0x0000889c bl 0x1e7a4                                    |     fcn_0001e7a4 (r0, r1);
    0x000088a0 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x000088a4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000088a8 mvneq r3, 0x62                                |         r3 = ~0x62;
                                                             |     }
    0x000088ac str r0, [r5, r8, lsl 2]                       |     offset_0 = r8 << 2;
                                                             |     *((r5 + offset_0)) = r0;
    0x000088b0 str r0, [sp, 0x30]                            |     var_30h = r0;
                                                             |     if (r0 != 0) {
    0x000088b4 streq r3, [sp, 0x2c]                          |         var_2ch = r3;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x000088b8 beq 0x8930                                    |         
    0x000088bc mov r1, r3                                    |         r1 = r3;
    0x000088c0 add r0, sp, 0x30                              |         r0 += var_30h;
    0x000088c4 bl 0x1b620                                    |         fcn_0001b620 (r0, r1);
    0x000088c8 ldr r2, [pc, 0x464]                           |         r2 = *(0x8d30);
    0x000088cc mov r1, 0xb                                   |         r1 = 0xb;
    0x000088d0 add r2, pc, r2                                |         r2 = pc + r2;
    0x000088d4 str r0, [sp, 0x2c]                            |         var_2ch = r0;
    0x000088d8 str r7, [r6, r8, lsl 2]                       |         offset_1 = r8 << 2;
                                                             |         *((r6 + offset_1)) = r7;
    0x000088dc ldr r3, [sb, 0xe8]                            |         r3 = *((sb + 0xe8));
    0x000088e0 add r0, sp, 0x34                              |         r0 += src;
    0x000088e4 str r3, [sp]                                  |         *(sp) = r3;
    0x000088e8 ldr r3, [pc, 0x448]                           |         r3 = *(0x8d34);
    0x000088ec add r3, pc, r3                                |         r3 = pc + r3;
    0x000088f0 bl 0x3638                                     |         r0 = snprintf (r0, r1, r2, r3)
                                                             | label_7:
    0x000088f4 cmp r0, 0xa                                   |         
                                                             |         if (r0 <= 0xa) {
    0x000088f8 ble 0x8af8                                    |             goto label_25;
                                                             |         }
    0x000088fc ldr r2, [pc, 0x438]                           |         r2 = *(0x8d38);
    0x00008900 mov r3, r0                                    |         r3 = r0;
    0x00008904 add r2, pc, r2                                |         r2 = pc + r2;
    0x00008908 mov r1, 0                                     |         r1 = 0;
    0x0000890c mov r0, 5                                     |         r0 = 5;
    0x00008910 bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
                                                             | label_8:
    0x00008914 cmp r8, 0                                     |         
                                                             |         if (r8 == 0) {
    0x00008918 beq 0x8930                                    |             goto label_26;
                                                             |         }
    0x0000891c ldr r0, [pc, 0x41c]                           |         r0 = *(0x8d3c);
    0x00008920 ldr r2, [r5, r8, lsl 2]                       |         offset_2 = r8 << 2;
                                                             |         r2 = *((r5 + offset_2));
    0x00008924 mov r1, 0x19c                                 |         r1 = 0x19c;
    0x00008928 add r0, pc, r0                                |         r0 = pc + r0;
    0x0000892c bl 0x1e960                                    |         fcn_0001e960 (r0, r1);
                                                             |     }
                                                             | label_26:
    0x00008930 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00008934 bne 0x8b7c                                    |         goto label_20;
                                                             |     }
                                                             | label_9:
    0x00008938 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x0000893c beq 0x86e8                                    |         goto label_1;
                                                             |     }
    0x00008940 ldr r0, [pc, 0x3fc]                           |     r0 = *(0x8d40);
    0x00008944 mov r2, r5                                    |     r2 = r5;
    0x00008948 mov r1, 0x1a0                                 |     r1 = 0x1a0;
    0x0000894c add r0, pc, r0                                |     r0 = pc + r0;
    0x00008950 bl 0x1e960                                    |     fcn_0001e960 (r0, r1);
    0x00008954 b 0x86e8                                      |     goto label_1;
                                                             | label_23:
    0x00008958 ldr r0, [r4, 0x38]                            |     r0 = *((r4 + 0x38));
    0x0000895c lsl r2, r7, 2                                 |     r2 = r7 << 2;
    0x00008960 ldr r0, [r0, r7, lsl 2]                       |     offset_3 = r7 << 2;
                                                             |     r0 = *((r0 + offset_3));
    0x00008964 str r1, [sp, 0x1c]                            |     var_1ch = r1;
    0x00008968 str r0, [r5, r8, lsl 2]                       |     offset_4 = r8 << 2;
                                                             |     *((r5 + offset_4)) = r0;
    0x0000896c ldr r0, [r4, 0x38]                            |     r0 = *((r4 + 0x38));
    0x00008970 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00008974 ldr r0, [r0, r7, lsl 2]                       |     offset_5 = r7 << 2;
                                                             |     r0 = *((r0 + offset_5));
    0x00008978 str r2, [sp, 0x14]                            |     var_14h = r2;
    0x0000897c bl 0x3608                                     |     strlen (r0);
    0x00008980 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00008984 ldr r1, [sp, 0x1c]                            |     r1 = var_1ch;
    0x00008988 add r0, r0, 1                                 |     r0++;
    0x0000898c str r0, [r6, r8, lsl 2]                       |     offset_6 = r8 << 2;
                                                             |     *((r6 + offset_6)) = r0;
    0x00008990 ldr r0, [sb, 0xc]                             |     r0 = *((sb + 0xc));
    0x00008994 add r8, r8, 2                                 |     r8 += 2;
    0x00008998 ldr r0, [r0, 0x9c]                            |     r0 = *((r0 + 0x9c));
    0x0000899c cmp r0, 4                                     |     
    0x000089a0 lsl r0, r7, 3                                 |     r0 = r7 << 3;
                                                             |     if (r0 > 4) {
    0x000089a4 bgt 0x89cc                                    |         goto label_27;
                                                             |     }
    0x000089a8 ldr lr, [r4, 0x3c]                            |     
    0x000089ac ldr r2, [sp, 0x14]                            |     r2 = var_14h;
    0x000089b0 add ip, r5, r0                                |     
    0x000089b4 add r2, lr, r2                                |     r2 = lr + r2;
    0x000089b8 add r0, r6, r0                                |     r0 = r6 + r0;
    0x000089bc str r2, [ip, 0x10]                            |     *((ip + 0x10)) = r2;
    0x000089c0 str r1, [r0, 0x10]                            |     *((r0 + 0x10)) = r1;
                                                             |     do {
    0x000089c4 add r7, r7, 1                                 |         r7++;
    0x000089c8 b 0x882c                                      |         goto label_2;
                                                             | label_27:
    0x000089cc ldr r2, [r4, 0x34]                            |         r2 = *((r4 + 0x34));
    0x000089d0 cmp r2, 1                                     |         
                                                             |         if (r2 == 1) {
    0x000089d4 ldrne r2, [r4, 0x4c]                          |             r2 = *((r4 + 0x4c));
                                                             |         }
                                                             |         if (r2 != 1) {
    0x000089d8 ldreq ip, [sp, 0x10]                          |             ip = var_10h;
                                                             |         }
    0x000089dc mlane lr, r3, r7, r2                          |         __asm ("mlane lr, r3, r7, r2");
                                                             |         if (r2 != 1) {
    0x000089e0 addeq r2, r5, r0                              |             r2 = r5 + r0;
                                                             |         }
                                                             |         if (r2 == 1) {
    0x000089e4 addne ip, r5, r0                              |             
                                                             |         }
    0x000089e8 add r0, r6, r0                                |         r0 = r6 + r0;
                                                             |         if (r2 != 1) {
    0x000089ec streq ip, [r2, 0x10]                          |             *((r2 + 0x10)) = ip;
                                                             |         }
                                                             |         if (r2 == 1) {
    0x000089f0 strne lr, [ip, 0x10]                          |             
                                                             |         }
    0x000089f4 str r3, [r0, 0x10]                            |         *((r0 + 0x10)) = r3;
    0x000089f8 b 0x89c4                                      |         
                                                             |     } while (1);
                                                             | label_18:
    0x000089fc ldr r3, [r3, 0x9c]                            |     r3 = *((r3 + 0x9c));
    0x00008a00 ldr r5, [pc, 0x340]                           |     r5 = *(0x8d44);
    0x00008a04 cmp r3, 5                                     |     
    0x00008a08 ldr r3, [r4, 0x34]                            |     r3 = *((r4 + 0x34));
                                                             |     if (r3 >= 5) {
    0x00008a0c movlt sl, 3                                   |         sl = 3;
                                                             |     }
                                                             |     if (r3 < 5) {
    0x00008a10 movge sl, 4                                   |         sl = 4;
                                                             |     }
    0x00008a14 add sl, sl, r3                                |     sl += r3;
    0x00008a18 lsl r7, sl, 2                                 |     r7 = sl << 2;
    0x00008a1c add r5, pc, r5                                |     r5 = pc + r5;
    0x00008a20 mov r2, r7                                    |     r2 = r7;
    0x00008a24 ldr r1, [pc, 0x320]                           |     r1 = *(0x8d48);
    0x00008a28 mov r0, r5                                    |     r0 = r5;
    0x00008a2c bl 0x1e7a4                                    |     r0 = fcn_0001e7a4 (r0, r1);
    0x00008a30 subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 == r0) {
    0x00008a34 beq 0x86d4                                    |         goto label_3;
                                                             |     }
    0x00008a38 mov r0, r5                                    |     r0 = r5;
    0x00008a3c mov r2, r7                                    |     r2 = r7;
    0x00008a40 ldr r1, [pc, 0x308]                           |     r1 = *(0x8d4c);
    0x00008a44 bl 0x1e7a4                                    |     r0 = fcn_0001e7a4 (r0, r1);
    0x00008a48 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 == r0) {
    0x00008a4c beq 0x86d4                                    |         goto label_3;
                                                             |     }
    0x00008a50 mov r3, 4                                     |     r3 = 4;
    0x00008a54 add r2, r4, 0x14                              |     r2 = r4 + 0x14;
    0x00008a58 str r4, [r5]                                  |     *(r5) = r4;
    0x00008a5c mov r7, 3                                     |     r7 = 3;
    0x00008a60 str r3, [r6]                                  |     *(r6) = r3;
    0x00008a64 str r2, [r5, 4]                               |     *((r5 + 4)) = r2;
    0x00008a68 add r2, r4, 0x34                              |     r2 = r4 + 0x34;
    0x00008a6c str r3, [r6, 4]                               |     *((r6 + 4)) = r3;
    0x00008a70 str r2, [r5, 8]                               |     *((r5 + 8)) = r2;
    0x00008a74 str r3, [r6, 8]                               |     *((r6 + 8)) = r3;
                                                             | label_5:
    0x00008a78 ldr r2, [r4, 0x34]                            |     r2 = *((r4 + 0x34));
    0x00008a7c sub r3, r7, 3                                 |     r3 = r7 - 3;
    0x00008a80 cmp r2, r3                                    |     
    0x00008a84 mov r8, r7                                    |     r8 = r7;
                                                             |     if (r2 <= r3) {
    0x00008a88 ble 0x8838                                    |         goto label_4;
                                                             |     }
    0x00008a8c ldr r2, [r4, 0x38]                            |     r2 = *((r4 + 0x38));
    0x00008a90 sub r3, r7, 0xc0000003                        |     r3 = r7 - 0xc0000003;
    0x00008a94 ldr r2, [r2, r3, lsl 2]                       |     offset_7 = r3 << 2;
                                                             |     r2 = *((r2 + offset_7));
    0x00008a98 str r2, [r5, r7, lsl 2]                       |     offset_8 = r7 << 2;
                                                             |     *((r5 + offset_8)) = r2;
    0x00008a9c ldr r2, [r4, 0x38]                            |     r2 = *((r4 + 0x38));
    0x00008aa0 ldr r0, [r2, r3, lsl 2]                       |     offset_9 = r3 << 2;
                                                             |     r0 = *((r2 + offset_9));
    0x00008aa4 bl 0x3608                                     |     r0 = strlen (r0);
    0x00008aa8 add r0, r0, 1                                 |     r0++;
    0x00008aac str r0, [r6, r7, lsl 2]                       |     offset_10 = r7 << 2;
                                                             |     *((r6 + offset_10)) = r0;
    0x00008ab0 add r7, r7, 1                                 |     r7++;
    0x00008ab4 b 0x8a78                                      |     goto label_5;
                                                             | label_19:
    0x00008ab8 mov sl, r7                                    |     sl = r7;
    0x00008abc mov r8, r7                                    |     r8 = r7;
    0x00008ac0 mov r5, r7                                    |     r5 = r7;
    0x00008ac4 mov r6, r7                                    |     r6 = r7;
    0x00008ac8 b 0x883c                                      |     goto label_6;
                                                             | label_24:
    0x00008acc ldr r3, [sb, 0xe8]                            |     r3 = *((sb + 0xe8));
    0x00008ad0 ldr r2, [pc, 0x27c]                           |     r2 = *(0x8d50);
    0x00008ad4 str r3, [sp]                                  |     *(sp) = r3;
    0x00008ad8 ldr r3, [pc, 0x278]                           |     r3 = *(0x8d54);
    0x00008adc add r2, pc, r2                                |     r2 = pc + r2;
    0x00008ae0 add r3, pc, r3                                |     r3 = pc + r3;
    0x00008ae4 mov r1, 0xb                                   |     r1 = 0xb;
    0x00008ae8 add r0, sp, 0x34                              |     r0 += src;
    0x00008aec bl 0x3638                                     |     snprintf (r0, r1, r2, r3)
    0x00008af0 mov r8, r7                                    |     r8 = r7;
    0x00008af4 b 0x88f4                                      |     goto label_7;
                                                             | label_25:
    0x00008af8 cmp sl, 0                                     |     
                                                             |     if (sl <= 0) {
    0x00008afc ble 0x8914                                    |         goto label_8;
                                                             |     }
    0x00008b00 ldr r0, [sb, 0xc]                             |     r0 = *((sb + 0xc));
    0x00008b04 ldr r7, [r0, 0x88]                            |     r7 = *((r0 + 0x88));
    0x00008b08 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00008b0c beq 0x8b28                                    |         
    0x00008b10 mov r3, r6                                    |         r3 = r6;
    0x00008b14 mov r2, r5                                    |         r2 = r5;
    0x00008b18 mov r1, sl                                    |         r1 = sl;
    0x00008b1c ldr r0, [r0, 0x90]                            |         r0 = *((r0 + 0x90));
    0x00008b20 blx r7                                        |         uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00008b24 str r0, [sp, 0x2c]                            |         var_2ch = r0;
                                                             |     }
    0x00008b28 ldr r0, [sb, 0xc]                             |     r0 = *((sb + 0xc));
    0x00008b2c mov r2, sl                                    |     r2 = sl;
    0x00008b30 ldr r3, [r0, 0x84]                            |     r3 = *((r0 + 0x84));
    0x00008b34 add r1, sp, 0x34                              |     r1 += src;
    0x00008b38 str r6, [sp]                                  |     *(sp) = r6;
    0x00008b3c ldr r7, [r3, 0xc]                             |     r7 = *((r3 + 0xc));
    0x00008b40 ldr r0, [r0, 0x80]                            |     r0 = *((r0 + 0x80));
    0x00008b44 mov r3, r5                                    |     r3 = r5;
    0x00008b48 blx r7                                        |     r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00008b4c cmp r0, 0                                     |     
    0x00008b50 mov r3, r0                                    |     r3 = r0;
    0x00008b54 str r0, [sp, 0x2c]                            |     var_2ch = r0;
                                                             |     if (r0 != 0) {
    0x00008b58 beq 0x8b70                                    |         
    0x00008b5c ldr r2, [pc, 0x1f8]                           |         r2 = *(0x8d58);
    0x00008b60 mov r1, 0                                     |         r1 = 0;
    0x00008b64 add r2, pc, r2                                |         r2 = pc + r2;
    0x00008b68 mov r0, 5                                     |         r0 = 5;
    0x00008b6c bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
                                                             |     }
    0x00008b70 ldr r3, [sb, 0xe8]                            |     r3 = *((sb + 0xe8));
    0x00008b74 str r3, [r4, 0x54]                            |     *((r4 + 0x54)) = r3;
    0x00008b78 b 0x8914                                      |     goto label_8;
                                                             | label_20:
    0x00008b7c ldr r0, [pc, 0x1dc]                           |     r0 = *(0x8d5c);
    0x00008b80 mov r2, r6                                    |     r2 = r6;
    0x00008b84 ldr r1, [pc, 0x1d8]                           |     r1 = *(0x8d60);
    0x00008b88 add r0, pc, r0                                |     r0 = pc + r0;
    0x00008b8c bl 0x1e960                                    |     fcn_0001e960 (r0, r1);
    0x00008b90 b 0x8938                                      |     goto label_9;
                                                             | label_21:
    0x00008b94 ldr r3, [pc, 0x1cc]                           |     r3 = *(0x8d64);
    0x00008b98 ldr r2, [pc, 0x1cc]                           |     r2 = *(0x8d68);
    0x00008b9c add r3, pc, r3                                |     r3 = pc + r3;
    0x00008ba0 add r2, pc, r2                                |     r2 = pc + r2;
    0x00008ba4 b 0x8754                                      |     goto label_10;
                                                             | label_22:
    0x00008ba8 mov r0, r6                                    |     r0 = r6;
    0x00008bac bl 0x3608                                     |     strlen (r0);
    0x00008bb0 ldr r5, [pc, 0x1b8]                           |     r5 = *(0x8d6c);
    0x00008bb4 ldr r1, [pc, 0x1b8]                           |     r1 = *(0x8d70);
    0x00008bb8 add r5, pc, r5                                |     r5 = pc + r5;
    0x00008bbc add r2, r0, 1                                 |     r2 += var_1h;
    0x00008bc0 mov r0, r5                                    |     r0 = r5;
    0x00008bc4 bl 0x1e7a4                                    |     fcn_0001e7a4 (r0, r1);
    0x00008bc8 mov r1, r6                                    |     r1 = r6;
    0x00008bcc mov r6, 0                                     |     r6 = 0;
    0x00008bd0 str r0, [r4, 0x5c]                            |     *((r4 + 0x5c)) = r0;
    0x00008bd4 bl 0x3bd8                                     |     strcpy (r0, r1);
    0x00008bd8 ldr r2, [r4, 0x3c]                            |     r2 = *((r4 + 0x3c));
    0x00008bdc mov r1, 0x35c                                 |     r1 = 0x35c;
    0x00008be0 mov r0, r5                                    |     r0 = r5;
    0x00008be4 bl 0x1e960                                    |     fcn_0001e960 (r0, r1);
    0x00008be8 mov r0, r5                                    |     r0 = r5;
    0x00008bec str r6, [r4, 0x3c]                            |     *((r4 + 0x3c)) = r6;
    0x00008bf0 ldr r2, [r4, 0x34]                            |     r2 = *((r4 + 0x34));
    0x00008bf4 ldr r1, [pc, 0x17c]                           |     r1 = *(0x8d74);
    0x00008bf8 bl 0x1e960                                    |     fcn_0001e960 (r0, r1);
    0x00008bfc str r6, [r4, 0x34]                            |     *((r4 + 0x34)) = r6;
    0x00008c00 add r0, r4, 0x24                              |     r0 = r4 + 0x24;
    0x00008c04 bl 0x3ac4                                     |     fcn_00003ac4 ();
                                                             | label_15:
    0x00008c08 ldr r3, [r4]                                  |     r3 = *(r4);
    0x00008c0c cmp r3, 3                                     |     
                                                             |     if (r3 != 3) {
    0x00008c10 bne 0x8780                                    |         goto label_11;
                                                             |     }
                                                             | label_17:
    0x00008c14 ldr r2, [r4, 0x50]                            |     r2 = *((r4 + 0x50));
    0x00008c18 ldr r1, [r2, 0xf0]                            |     r1 = *((r2 + 0xf0));
    0x00008c1c ldr r3, [r2, 0xf8]                            |     r3 = *((r2 + 0xf8));
    0x00008c20 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00008c24 beq 0x8c40                                    |         
    0x00008c28 ldr r1, [r1, 0xc]                             |         r1 = *((r1 + 0xc));
    0x00008c2c cmp r1, r3                                    |         
                                                             |         if (r1 > r3) {
    0x00008c30 addle r6, sp, 0x40                            |             r6 += var_40h;
                                                             |         }
                                                             |         if (r1 > r3) {
    0x00008c34 movle r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r1 > r3) {
    0x00008c38 strle r3, [r6, -0xc]!                         |             *((r6 -= 0xc)) = r3;
                                                             |         }
                                                             |         if (r1 <= r3) {
    0x00008c3c ble 0x8c70                                    |             goto label_28;
                                                             |         }
                                                             |     }
    0x00008c40 add r3, r3, 1                                 |     r3++;
    0x00008c44 str r3, [r2, 0xf8]                            |     *((r2 + 0xf8)) = r3;
    0x00008c48 b 0x8780                                      |     goto label_11;
                                                             |     do {
    0x00008c4c ldr r3, [sp, 0x34]                            |         r3 = src;
    0x00008c50 ldr r5, [r3, 8]                               |         r5 = *((r3 + 8));
    0x00008c54 ldr r3, [r4, 0x50]                            |         r3 = *((r4 + 0x50));
    0x00008c58 ldr r2, [r5, 0x50]                            |         r2 = *((r5 + 0x50));
    0x00008c5c cmp r2, r3                                    |         
                                                             |         if (r2 == r3) {
    0x00008c60 bne 0x8c70                                    |             
    0x00008c64 ldr r3, [r5]                                  |             r3 = *(r5);
    0x00008c68 cmp r3, 3                                     |             
                                                             |             if (r3 == 3) {
    0x00008c6c beq 0x8ca0                                    |                 goto label_29;
                                                             |             }
                                                             |         }
                                                             | label_28:
    0x00008c70 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00008c74 mov r1, r6                                    |         r1 = r6;
    0x00008c78 ldr r0, [r3]                                  |         r0 = *(r3);
    0x00008c7c bl 0x1b10c                                    |         r0 = fcn_0001b10c (r0, r1);
    0x00008c80 cmp r0, 0                                     |         
    0x00008c84 bne 0x8c4c                                    |         
                                                             |     } while (r0 != 0);
    0x00008c88 b 0x8780                                      |     goto label_11;
                                                             | label_14:
    0x00008c8c mov r0, r4                                    |     r0 = r4;
    0x00008c90 bl 0x7230                                     |     fcn_00007230 (r0);
    0x00008c94 mvn r3, 0x11                                  |     r3 = ~0x11;
    0x00008c98 str r3, [sp, 0x28]                            |     var_28h = r3;
    0x00008c9c b 0x8780                                      |     goto label_11;
                                                             | label_29:
    0x00008ca0 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00008ca4 mov r1, r5                                    |     r1 = r5;
    0x00008ca8 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00008cac bl 0x1b288                                    |     fcn_0001b288 (r0);
    0x00008cb0 mov r0, r5                                    |     r0 = r5;
    0x00008cb4 bl 0x7230                                     |     fcn_00007230 (r0);
    0x00008cb8 ldr r3, [r4, 0x50]                            |     r3 = *((r4 + 0x50));
    0x00008cbc ldr r3, [r3, 0xc]                             |     r3 = *((r3 + 0xc));
    0x00008cc0 ldr r3, [r3, 0x84]                            |     r3 = *((r3 + 0x84));
    0x00008cc4 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00008cc8 beq 0x8780                                    |         goto label_11;
                                                             |     }
    0x00008ccc mov r0, r5                                    |     r0 = r5;
    0x00008cd0 bl 0x7784                                     |     fcn_00007784 (r0);
    0x00008cd4 b 0x8780                                      |     goto label_11;
                                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0xd268 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000d268 ()                  | uint32_t fcn_0000d268 (uint32_t arg1) {
                                             |     r0 = arg1;
    0x0000d268 cmp r0, 2                     |     
    0x0000d26c mov r3, r0                    |     r3 = r0;
                                             |     if (r0 == 2) {
    0x0000d270 beq 0xd2b8                    |         goto label_1;
                                             |     }
    0x0000d274 cmp r0, 0x300                 |     
                                             |     if (r0 == 0x300) {
    0x0000d278 beq 0xd2d8                    |         goto label_2;
                                             |     }
    0x0000d27c ldr r2, [pc, 0x5c]            |     r2 = *(0xd2dc);
    0x0000d280 cmp r0, r2                    |     
                                             |     if (r0 != r2) {
    0x0000d284 moveq r1, 2                   |         r1 = 2;
                                             |     }
    0x0000d288 beq 0xd2bc                    |     
                                             |     while (1) {
    0x0000d28c push {r4, lr}                 |         
    0x0000d290 ldr r4, [pc, 0x4c]            |         
    0x0000d294 ldr r2, [pc, 0x4c]            |         r2 = *(0xd2e4);
    0x0000d298 add r4, pc, r4                |         r4 = pc + r4;
    0x0000d29c add r4, r4, 0x7c              |         r4 = 0xd35c;
    0x0000d2a0 add r2, pc, r2                |         r2 = pc + r2;
    0x0000d2a4 mov r1, 0x14                  |         r1 = 0x14;
    0x0000d2a8 mov r0, r4                    |         r0 = r4;
    0x0000d2ac bl 0x3638                     |         snprintf (r0, r1, r2, r3)
    0x0000d2b0 mov r0, r4                    |         r0 = r4;
    0x0000d2b4 pop {r4, pc}                  |         
                                             | label_1:
    0x0000d2b8 mov r1, 0                     |         r1 = 0;
                                             | label_0:
    0x0000d2bc ldr r2, [pc, 0x28]            |         r2 = *(0xd2e8);
    0x0000d2c0 add r2, pc, r2                |         r2 = pc + r2;
    0x0000d2c4 add r2, r2, r1, lsl 3         |         r2 += (r1 << 3);
    0x0000d2c8 ldr r0, [r2, 0x1a4]           |         r0 = *((r2 + 0x1a4));
    0x0000d2cc cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000d2d0 bxne lr                       |             return r0;
                                             |         }
    0x0000d2d4 b 0xd28c                      |         
                                             |     }
                                             | label_2:
    0x0000d2d8 mov r1, 1                     |     r1 = 1;
    0x0000d2dc b 0xd2bc                      |     goto label_0;
                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x15818 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00015818 ()                      | void fcn_00015818 (int32_t arg1) {
                                                 |     r0 = arg1;
    0x00015818 push {r4, r5, r6, r7, r8, lr}     |     
    0x0001581c ldr r6, [pc, 0x74]                |     r6 = *(0x15894);
    0x00015820 mov r5, r0                        |     r5 = r0;
    0x00015824 add r6, pc, r6                    |     r6 = pc + r6;
    0x00015828 add r4, r6, 0x8c                  |     r4 = r6 + 0x8c;
    0x0001582c mov r0, r4                        |     r0 = r4;
    0x00015830 bl 0x3608                         |     strlen (r0);
    0x00015834 mov r2, r4                        |     r2 = r4;
    0x00015838 add r1, r5, 4                     |     r1 = r5 + 4;
    0x0001583c mov r3, 0x2f                      |     r3 = 0x2f;
    0x00015840 rsb r7, r0, 0x39                  |     r7 = 0x39 - r0;
    0x00015844 ldrh r0, [r5]                     |     r0 = *(r5);
    0x00015848 bl 0x3ba8                         |     inet_ntop ();
    0x0001584c mov r0, r4                        |     r0 = r4;
    0x00015850 bl 0x3608                         |     strlen (r0);
    0x00015854 ldrh r2, [r5, 2]                  |     r2 = *((r5 + 2));
    0x00015858 mov r1, r7                        |     r1 = r7;
    0x0001585c lsr r3, r2, 8                     |     r3 = r2 >> 8;
    0x00015860 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x00015864 ldr r2, [pc, 0x30]                |     r2 = "p:__";
    0x00015868 lsl r3, r3, 0x10                  |     r3 <<= 0x10;
    0x0001586c lsr r3, r3, 0x10                  |     r3 >>= 0x10;
    0x00015870 add r2, pc, r2                    |     r2 = pc + r2;
    0x00015874 add r0, r4, r0                    |     r0 = r4 + r0;
    0x00015878 bl 0x3638                         |     r0 = snprintf (r0, r1, r2, r3)
    0x0001587c cmp r0, r7                        |     
    0x00015880 ldr r0, [pc, 0x18]                |     
                                                 |     if (r0 < r7) {
    0x00015884 movhs r3, 0                       |         r3 = 0;
                                                 |     }
    0x00015888 add r0, pc, r0                    |     r0 = pc + r0;
                                                 |     if (r0 < r7) {
    0x0001588c strbhs r3, [r6, 0xc4]             |         *((r6 + 0xc4)) = r3;
                                                 |     }
    0x00015890 add r0, r0, 0x8c                  |     r0 = 0x15928;
    0x00015894 pop {r4, r5, r6, r7, r8, pc}      |     
                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x15bf4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00015bf4 ()                          | void fcn_00015bf4 (uint32_t arg1, int32_t arg2) {
                                                     |     int32_t var_0h;
                                                     |     int32_t var_4h;
                                                     |     int32_t var_8h;
                                                     |     int32_t var_ch;
                                                     |     int32_t var_10h;
                                                     |     int32_t var_14h;
                                                     |     int32_t var_18h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00015bf4 ldr r2, [pc, 0x188]                   |     r2 = *(0x15d80);
    0x00015bf8 add r2, pc, r2                        |     r2 = pc + r2;
    0x00015bfc ldr r3, [r2, 0x14]                    |     r3 = *(0x15d94);
    0x00015c00 cmn r3, 1                             |     
                                                     |     if (r3 != 1) {
    0x00015c04 ldreq r3, [r2, 4]                     |         r3 = *((r2 + 4));
                                                     |     }
    0x00015c08 cmp r3, r0                            |     
                                                     |     if (r3 <= r0) {
    0x00015c0c movgt r3, 0                           |         r3 = 0;
                                                     |     }
                                                     |     if (r3 > r0) {
    0x00015c10 movle r3, 1                           |         r3 = 1;
                                                     |     }
    0x00015c14 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00015c18 bxeq lr                               |         return;
                                                     |     }
    0x00015c1c ldr r3, [pc, 0x164]                   |     r3 = *(0x15d84);
    0x00015c20 push {r4, r5, r6, r7, r8, lr}         |     
    0x00015c24 add r3, pc, r3                        |     r3 = pc + r3;
    0x00015c28 ldr r2, [r3]                          |     r2 = *(0x15d84);
    0x00015c2c sub sp, sp, 0x18                      |     
    0x00015c30 cmp r2, 0                             |     
    0x00015c34 mov r4, r1                            |     r4 = r1;
    0x00015c38 mov r7, r0                            |     r7 = r0;
                                                     |     if (r2 == 0) {
    0x00015c3c bne 0x15c4c                           |         
    0x00015c40 ldr r5, [r3, 0x10]                    |         r5 = *((r3 + 0x10));
    0x00015c44 cmp r5, 0                             |         
                                                     |         if (r5 == 0) {
    0x00015c48 beq 0x15ce4                           |             goto label_0;
                                                     |         }
                                                     |     }
    0x00015c4c mov r0, r4                            |     r0 = r4;
    0x00015c50 bl 0x37b8                             |     localtime (r0);
    0x00015c54 ldr r6, [pc, 0x130]                   |     
    0x00015c58 ldr r2, [pc, 0x130]                   |     r2 = "QTTAsync_setCallbacks";
    0x00015c5c add r6, pc, r6                        |     r6 = pc + r6;
    0x00015c60 add r5, r6, 0x2b                      |     r5 = r6 + 0x2b;
    0x00015c64 add r2, pc, r2                        |     r2 = pc + r2;
    0x00015c68 mov r1, 0x50                          |     r1 = 0x50;
    0x00015c6c add r8, r6, 0x24                      |     r8 = r6 + 0x24;
    0x00015c70 mov r3, r0                            |     r3 = r0;
    0x00015c74 mov r0, r5                            |     r0 = r5;
    0x00015c78 bl 0x33e0                             |     strftime (r0, r1, r2, r3);
    0x00015c7c mov r1, 0x3e8                         |     r1 = 0x3e8;
    0x00015c80 ldr r0, [r4, 4]                       |     r0 = *((r4 + 4));
    0x00015c84 bl 0x1ef80                            |     fcn_0001ef80 (r0, r1);
    0x00015c88 ldr r2, [pc, 0x104]                   |     r2 = *(0x15d90);
    0x00015c8c ldr r1, [pc, 0x104]                   |     r1 = *(0x15d94);
    0x00015c90 add r2, pc, r2                        |     r2 = pc + r2;
    0x00015c94 mov r3, r0                            |     r3 = r0;
    0x00015c98 add r0, r6, 0x3a                      |     r0 = r6 + 0x3a;
    0x00015c9c bl 0x3638                             |     snprintf (r0, r1, r2, r3)
    0x00015ca0 ldr r2, [pc, 0xf4]                    |     r2 = *(0x15d98);
    0x00015ca4 ldr r3, [r4, 8]                       |     r3 = *((r4 + 8));
    0x00015ca8 mov r0, r8                            |     r0 = r8;
    0x00015cac add r2, pc, r2                        |     r2 = pc + r2;
    0x00015cb0 mov r1, 0x200                         |     r1 = 0x200;
    0x00015cb4 bl 0x3638                             |     snprintf (r0, r1, r2, r3)
    0x00015cb8 mov r3, 0x20                          |     r3 = 0x20;
    0x00015cbc strb r3, [r6, 0x2a]                   |     *((r6 + 0x2a)) = r3;
    0x00015cc0 ldr r3, [r4, 0x120]                   |     r3 = *((r4 + 0x120));
    0x00015cc4 add r8, r4, 0x18                      |     r8 = r4 + 0x18;
    0x00015cc8 cmp r3, 2                             |     
    0x00015ccc add r6, r6, 0x3f                      |     r6 = 0x15dc7;
                                                     |     if (r3 != 2) {
    0x00015cd0 bne 0x15cf8                           |         goto label_1;
                                                     |     }
    0x00015cd4 ldr r2, [pc, 0xc4]                    |     r2 = *(0x15d9c);
    0x00015cd8 mov r1, r8                            |     r1 = r8;
    0x00015cdc mov r0, r6                            |     r0 = r6;
    0x00015ce0 bl 0x3830                             |     strncpy (r0, r1, r2);
                                                     |     do {
                                                     | label_0:
    0x00015ce4 mov r1, r5                            |         r1 = r5;
    0x00015ce8 mov r0, r7                            |         r0 = r7;
    0x00015cec add sp, sp, 0x18                      |         
    0x00015cf0 pop {r4, r5, r6, r7, r8, lr}          |         
    0x00015cf4 b 0x15904                             |         void (*0x15904)() ();
                                                     | label_1:
    0x00015cf8 ldr r1, [r4, 0x128]                   |         r1 = *((r4 + 0x128));
    0x00015cfc ldr r0, [r4, 0xc]                     |         r0 = *((r4 + 0xc));
    0x00015d00 bl 0x1359c                            |         fcn_0001359c (r0, r1);
    0x00015d04 ldr r3, [r4, 0x120]                   |         r3 = *((r4 + 0x120));
    0x00015d08 ldr r1, [r4, 0x11c]                   |         r1 = *((r4 + 0x11c));
    0x00015d0c cmp r3, 1                             |         
    0x00015d10 ldr r3, [r4, 0x14]                    |         r3 = *((r4 + 0x14));
    0x00015d14 mov r2, r0                            |         r2 = r0;
                                                     |         if (r3 != 1) {
    0x00015d18 bne 0x15d54                           |             goto label_2;
                                                     |         }
    0x00015d1c ldr r0, [r4, 0x124]                   |         r0 = *((r4 + 0x124));
    0x00015d20 str r1, [sp, 0x10]                    |         var_10h = r1;
    0x00015d24 ldr r1, [pc, 0x78]                    |         r1 = *(0x15da0);
    0x00015d28 str r0, [sp, 0x14]                    |         var_14h = r0;
    0x00015d2c add r1, pc, r1                        |         r1 = pc + r1;
    0x00015d30 str r1, [sp, 4]                       |         var_4h = r1;
    0x00015d34 str r8, [sp, 0xc]                     |         var_ch = r8;
    0x00015d38 str r3, [sp, 8]                       |         var_8h = r3;
    0x00015d3c str r3, [sp]                          |         *(sp) = r3;
    0x00015d40 ldr r1, [pc, 0x58]                    |         r1 = *(0x15d9c);
    0x00015d44 ldr r3, [r4, 0x10]                    |         r3 = *((r4 + 0x10));
    0x00015d48 mov r0, r6                            |         r0 = r6;
    0x00015d4c bl 0x3638                             |         snprintf (r0, r1, r2, r3)
    0x00015d50 b 0x15ce4                             |         
                                                     |     } while (1);
                                                     | label_2:
    0x00015d54 str r1, [sp, 0x10]                    |     var_10h = r1;
    0x00015d58 ldr r1, [pc, 0x48]                    |     r1 = *(0x15da4);
    0x00015d5c str r8, [sp, 0xc]                     |     var_ch = r8;
    0x00015d60 add r1, pc, r1                        |     r1 = pc + r1;
    0x00015d64 str r1, [sp, 4]                       |     var_4h = r1;
    0x00015d68 str r3, [sp, 8]                       |     var_8h = r3;
    0x00015d6c str r3, [sp]                          |     *(sp) = r3;
    0x00015d70 ldr r1, [pc, 0x28]                    |     r1 = *(0x15d9c);
    0x00015d74 ldr r3, [r4, 0x10]                    |     r3 = *((r4 + 0x10));
    0x00015d78 mov r0, r6                            |     r0 = r6;
    0x00015d7c bl 0x3638                             |     snprintf (r0, r1, r2, r3)
    0x00015d80 b 0x15ce4                             |     goto label_0;
                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x15dac */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00015dac ()                      | void fcn_00015dac (int32_t arg1) {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_8h;
                                                 |     int32_t var_70h;
                                                 |     r0 = arg1;
    0x00015dac ldr r3, [pc, 0x3f8]               |     r3 = *(0x161a8);
    0x00015db0 push {r4, r5, r6, r7, r8, lr}     |     
    0x00015db4 ldr r4, [pc, 0x3f4]               |     r4 = *(0x161ac);
    0x00015db8 add r3, pc, r3                    |     r3 = pc + r3;
    0x00015dbc ldr r6, [r3, 8]                   |     r6 = *(0x161b0);
    0x00015dc0 mov r3, 0x12c                     |     r3 = 0x12c;
    0x00015dc4 sub sp, sp, 0x70                  |     
    0x00015dc8 mov r5, r0                        |     r5 = r0;
    0x00015dcc mul r0, r6, r3                    |     r0 = r6 * r3;
    0x00015dd0 bl 0x3584                         |     malloc (r0);
    0x00015dd4 ldr r7, [pc, 0x3d8]               |     r7 = *(0x161b0);
    0x00015dd8 add r4, pc, r4                    |     r4 = pc + r4;
    0x00015ddc add r7, pc, r7                    |     r7 = pc + r7;
    0x00015de0 cmp r0, 0                         |     
    0x00015de4 str r0, [r4, 0x1c]                |     *((r4 + 0x1c)) = r0;
                                                 |     if (r0 == 0) {
    0x00015de8 beq 0x16034                       |         goto label_6;
                                                 |     }
    0x00015dec ldr r0, [pc, 0x3c4]               |     r0 = *(0x161b4);
    0x00015df0 str r6, [r4, 0x18]                |     *((r4 + 0x18)) = r6;
    0x00015df4 add r0, pc, r0                    |     r0 = pc + r0;
    0x00015df8 bl 0x3470                         |     r0 = getenv (r0);
    0x00015dfc subs r6, r0, 0                    |     r6 = r0 - 0;
                                                 |     if (r6 == r0) {
    0x00015e00 beq 0x15e3c                       |         goto label_0;
                                                 |     }
    0x00015e04 ldrb r3, [r6]                     |     r3 = *(r6);
    0x00015e08 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x00015e0c beq 0x15e3c                       |         goto label_0;
                                                 |     }
    0x00015e10 ldr r1, [pc, 0x3a4]               |     r1 = *(0x161b8);
    0x00015e14 add r1, pc, r1                    |     r1 = pc + r1;
    0x00015e18 bl 0x3aac                         |     r0 = strcmp (r0, r1);
    0x00015e1c cmp r0, 0                         |     
    0x00015e20 bne 0x15fb8                       |     
                                                 |     while (r0 == 0) {
    0x00015e24 ldr r3, [pc, 0x394]               |         r3 = *(0x161bc);
    0x00015e28 ldr r3, [r7, r3]                  |         r3 = *((r7 + r3));
    0x00015e2c ldr r2, [r3]                      |         r2 = *(0x161bc);
    0x00015e30 ldr r3, [pc, 0x38c]               |         r3 = *(0x161c0);
    0x00015e34 add r3, pc, r3                    |         r3 = pc + r3;
    0x00015e38 str r2, [r3]                      |         *(r3) = r2;
                                                 | label_0:
    0x00015e3c ldr r0, [pc, 0x384]               |         r0 = *(0x161c4);
    0x00015e40 add r0, pc, r0                    |         r0 = pc + r0;
    0x00015e44 bl 0x3470                         |         r0 = getenv (r0);
    0x00015e48 subs r3, r0, 0                    |         r3 = r0 - 0;
                                                 |         if (r3 != r0) {
    0x00015e4c beq 0x15e74                       |             
    0x00015e50 ldrb r3, [r3]                     |             r3 = *(r3);
    0x00015e54 cmp r3, 0                         |             
                                                 |             if (r3 == 0) {
    0x00015e58 beq 0x15e74                       |                 goto label_1;
                                                 |             }
    0x00015e5c bl 0x3b18                         |             r0 = atoi (r0);
    0x00015e60 cmp r0, 0                         |             
                                                 |             if (r0 <= 0) {
    0x00015e64 ble 0x1606c                       |                 goto label_7;
                                                 |             }
    0x00015e68 ldr r3, [pc, 0x35c]               |             r3 = *(0x161c8);
    0x00015e6c add r3, pc, r3                    |             r3 = pc + r3;
    0x00015e70 str r0, [r3]                      |             *(r3) = r0;
                                                 |         }
                                                 | label_1:
    0x00015e74 ldr r0, [pc, 0x354]               |         r0 = *(0x161cc);
    0x00015e78 add r0, pc, r0                    |         r0 = pc + r0;
    0x00015e7c bl 0x3470                         |         r0 = getenv (r0);
    0x00015e80 subs r4, r0, 0                    |         r4 = r0 - 0;
                                                 |         if (r4 != r0) {
    0x00015e84 beq 0x15ed0                       |             
    0x00015e88 ldrb r3, [r4]                     |             r3 = *(r4);
    0x00015e8c cmp r3, 0                         |             
                                                 |             if (r3 == 0) {
    0x00015e90 beq 0x15ed0                       |                 goto label_3;
                                                 |             }
    0x00015e94 ldr r1, [pc, 0x338]               |             r1 = *(0x161d0);
    0x00015e98 add r1, pc, r1                    |             r1 = pc + r1;
    0x00015e9c bl 0x3aac                         |             r0 = strcmp (r0, r1);
    0x00015ea0 cmp r0, 0                         |             
                                                 |             if (r0 != 0) {
    0x00015ea4 beq 0x15ec0                       |                 
    0x00015ea8 ldr r1, [pc, 0x328]               |                 r1 = *(0x161d4);
    0x00015eac mov r0, r4                        |                 r0 = r4;
    0x00015eb0 add r1, pc, r1                    |                 r1 = pc + r1;
    0x00015eb4 bl 0x3aac                         |                 r0 = strcmp (r0, r1);
    0x00015eb8 cmp r0, 0                         |                 
                                                 |                 if (r0 != 0) {
    0x00015ebc bne 0x16080                       |                     goto label_8;
                                                 |                 }
                                                 |             }
    0x00015ec0 ldr r3, [pc, 0x314]               |             r3 = *(0x161d8);
    0x00015ec4 mov r2, 1                         |             r2 = 1;
    0x00015ec8 add r3, pc, r3                    |             r3 = pc + r3;
                                                 | label_2:
    0x00015ecc str r2, [r3, 4]                   |             *((r3 + 4)) = r2;
                                                 |         }
                                                 | label_3:
    0x00015ed0 ldr r1, [pc, 0x308]               |         r1 = *(0x161dc);
    0x00015ed4 mov r0, 3                         |         r0 = 3;
    0x00015ed8 add r1, pc, r1                    |         r1 = pc + r1;
    0x00015edc bl 0x15904                        |         fcn_00015904 (r0, r1);
    0x00015ee0 ldr r1, [pc, 0x2fc]               |         r1 = *(0x161e0);
    0x00015ee4 mov r0, 3                         |         r0 = 3;
    0x00015ee8 add r1, pc, r1                    |         r1 = pc + r1;
    0x00015eec bl 0x15904                        |         fcn_00015904 (r0, r1);
    0x00015ef0 cmp r5, 0                         |         
                                                 |         if (r5 != 0) {
    0x00015ef4 beq 0x15f20                       |             
    0x00015ef8 add r4, r5, 8                     |             r4 = r5 + 8;
    0x00015efc ldr r5, [pc, 0x2e4]               |             
    0x00015f00 ldr r6, [pc, 0x2e4]               |             r6 = *(0x161e8);
    0x00015f04 add r5, pc, r5                    |             r5 = pc + r5;
    0x00015f08 add r6, pc, r6                    |             r6 = pc + r6;
    0x00015f0c add r5, r5, 0x24                  |             r5 = 0x16208;
                                                 | label_5:
    0x00015f10 add r4, r4, 8                     |             r4 += 8;
    0x00015f14 ldr r3, [r4, -0x10]               |             r3 = *((r4 - 0x10));
    0x00015f18 cmp r3, 0                         |             
                                                 |             if (r3 != 0) {
    0x00015f1c bne 0x16184                       |                 goto label_9;
                                                 |             }
                                                 |         }
    0x00015f20 ldr r4, [pc, 0x2c8]               |         r4 = *(0x161ec);
    0x00015f24 add r1, sp, 8                     |         r1 += var_8h;
    0x00015f28 add r4, pc, r4                    |         r4 = pc + r4;
    0x00015f2c mov r0, r4                        |         r0 = r4;
    0x00015f30 bl 0x36a4                         |         r0 = stat64 ();
    0x00015f34 cmn r0, 1                         |         
                                                 |         if (r0 != 1) {
    0x00015f38 beq 0x15fa4                       |             
    0x00015f3c ldr r1, [pc, 0x2b0]               |             r1 = *(0x161f0);
    0x00015f40 mov r0, r4                        |             r0 = r4;
    0x00015f44 add r1, pc, r1                    |             r1 = pc + r1;
    0x00015f48 bl 0x35c0                         |             r0 = fopen64 ();
    0x00015f4c subs r5, r0, 0                    |             r5 = r0 - 0;
                                                 |             if (r5 == r0) {
    0x00015f50 beq 0x15fa4                       |                 goto label_10;
                                                 |             }
    0x00015f54 ldr r4, [pc, 0x29c]               |             
    0x00015f58 ldr r1, [pc, 0x29c]               |             r1 = *(0x161f8);
    0x00015f5c add r4, pc, r4                    |             r4 = pc + r4;
    0x00015f60 add r4, r4, 0x24                  |             r4 = 0x16218;
    0x00015f64 add r1, pc, r1                    |             r1 = pc + r1;
    0x00015f68 mov r0, r4                        |             r0 = r4;
    0x00015f6c bl 0x3bd8                         |             strcpy (r0, r1);
    0x00015f70 mov r0, r4                        |             r0 = r4;
    0x00015f74 bl 0x3608                         |             strlen (r0);
    0x00015f78 mov r2, r5                        |             r2 = r5;
    0x00015f7c rsb r1, r0, 0x200                 |             r1 = 0x200 - r0;
    0x00015f80 add r0, r4, r0                    |             r0 = r4 + r0;
    0x00015f84 bl 0x3800                         |             r0 = fgets (r0, r1, r2);
    0x00015f88 cmp r0, 0                         |             
                                                 |             if (r0 != 0) {
    0x00015f8c beq 0x15f9c                       |                 
    0x00015f90 mov r1, r4                        |                 r1 = r4;
    0x00015f94 mov r0, 3                         |                 r0 = 3;
    0x00015f98 bl 0x15904                        |                 fcn_00015904 (r0, r1);
                                                 |             }
    0x00015f9c mov r0, r5                        |             r0 = r5;
    0x00015fa0 bl 0x36e0                         |             fclose (r0);
                                                 |         }
                                                 | label_10:
    0x00015fa4 ldr r1, [pc, 0x254]               |         r1 = *(0x161fc);
    0x00015fa8 mov r0, 3                         |         r0 = 3;
    0x00015fac add r1, pc, r1                    |         r1 = pc + r1;
    0x00015fb0 bl 0x15904                        |         fcn_00015904 (r0, r1);
    0x00015fb4 b 0x16034                         |         goto label_6;
    0x00015fb8 ldr r1, [pc, 0x244]               |         r1 = *(0x16200);
    0x00015fbc mov r0, r6                        |         r0 = r6;
    0x00015fc0 add r1, pc, r1                    |         r1 = pc + r1;
    0x00015fc4 bl 0x35c0                         |         r0 = fopen64 ();
    0x00015fc8 cmp r0, 0                         |         
    0x00015fcc str r0, [r4]                      |         *(r4) = r0;
    0x00015fd0 beq 0x15e24                       |         
                                                 |     }
    0x00015fd4 mov r0, r6                        |     r0 = r6;
    0x00015fd8 bl 0x3608                         |     r0 = strlen (r0);
    0x00015fdc add r0, r0, 1                     |     r0++;
    0x00015fe0 bl 0x3584                         |     r0 = malloc (r0);
    0x00015fe4 cmp r0, 0                         |     
    0x00015fe8 mov r7, r0                        |     r7 = r0;
    0x00015fec str r0, [r4, 0xc]                 |     *((r4 + 0xc)) = r0;
                                                 |     if (r0 != 0) {
    0x00015ff0 ldreq r0, [r4, 0x1c]              |         r0 = *((r4 + 0x1c));
                                                 |     }
                                                 |     if (r0 != 0) {
    0x00015ff4 beq 0x16030                       |         
    0x00015ff8 mov r1, r6                        |         r1 = r6;
    0x00015ffc bl 0x3bd8                         |         strcpy (r0, r1);
    0x00016000 mov r0, r6                        |         r0 = r6;
    0x00016004 bl 0x3608                         |         r0 = strlen (r0);
    0x00016008 add r6, r0, 3                     |         r6 = r0 + 3;
    0x0001600c mov r8, r0                        |         r8 = r0;
    0x00016010 mov r0, r6                        |         r0 = r6;
    0x00016014 bl 0x3584                         |         r0 = malloc (r0);
    0x00016018 cmp r0, 0                         |         
    0x0001601c str r0, [r4, 8]                   |         *((r4 + 8)) = r0;
                                                 |         if (r0 != 0) {
    0x00016020 bne 0x16040                       |             goto label_11;
                                                 |         }
    0x00016024 ldr r0, [r4, 0x1c]                |         r0 = *((r4 + 0x1c));
    0x00016028 bl 0x3b0c                         |         free (r0);
    0x0001602c mov r0, r7                        |         r0 = r7;
                                                 |     }
    0x00016030 bl 0x3b0c                         |     free (r0);
                                                 | label_6:
    0x00016034 mvn r0, 0                         |     r0 = ~0;
    0x00016038 add sp, sp, 0x70                  |     
    0x0001603c pop {r4, r5, r6, r7, r8, pc}      |     
                                                 | label_11:
    0x00016040 ldr r2, [pc, 0x1c0]               |     r2 = *(0x16204);
    0x00016044 mov r3, r7                        |     r3 = r7;
    0x00016048 add r2, pc, r2                    |     r2 = pc + r2;
    0x0001604c mov r1, r6                        |     r1 = r6;
    0x00016050 bl 0x3638                         |     r0 = snprintf (r0, r1, r2, r3)
    0x00016054 cmp r0, r6                        |     
                                                 |     if (r0 < r6) {
    0x00016058 ldrhs r0, [r4, 8]                 |         r0 = *((r4 + 8));
                                                 |     }
                                                 |     if (r0 < r6) {
    0x0001605c movhs r3, 0                       |         r3 = 0;
                                                 |     }
                                                 |     if (r0 < r6) {
    0x00016060 addhs r0, r0, r8                  |         r0 += r8;
                                                 |     }
                                                 |     if (r0 < r6) {
    0x00016064 strbhs r3, [r0, 2]                |         *((r0 + 2)) = r3;
                                                 |     }
    0x00016068 b 0x15e3c                         |     goto label_0;
                                                 | label_7:
    0x0001606c ldr r3, [pc, 0x198]               |     r3 = *(0x16208);
    0x00016070 mov r2, 0x3e8                     |     r2 = 0x3e8;
    0x00016074 add r3, pc, r3                    |     r3 = pc + r3;
    0x00016078 str r2, [r3]                      |     *(r3) = r2;
    0x0001607c b 0x15e74                         |     goto label_1;
                                                 | label_8:
    0x00016080 ldr r1, [pc, 0x188]               |     r1 = *(0x1620c);
    0x00016084 mov r0, r4                        |     r0 = r4;
    0x00016088 add r1, pc, r1                    |     r1 = pc + r1;
    0x0001608c bl 0x3aac                         |     r0 = strcmp (r0, r1);
    0x00016090 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00016094 beq 0x160b0                       |         
    0x00016098 ldr r1, [pc, 0x174]               |         r1 = *(0x16210);
    0x0001609c mov r0, r4                        |         r0 = r4;
    0x000160a0 add r1, pc, r1                    |         r1 = pc + r1;
    0x000160a4 bl 0x3aac                         |         r0 = strcmp (r0, r1);
    0x000160a8 cmp r0, 0                         |         
                                                 |         if (r0 != 0) {
    0x000160ac bne 0x160c0                       |             goto label_12;
                                                 |         }
                                                 |     }
    0x000160b0 ldr r3, [pc, 0x160]               |     r3 = *(0x16214);
    0x000160b4 mov r2, 2                         |     r2 = 2;
    0x000160b8 add r3, pc, r3                    |     r3 = pc + r3;
    0x000160bc b 0x15ecc                         |     goto label_2;
                                                 | label_12:
    0x000160c0 ldr r1, [pc, 0x154]               |     r1 = *(0x16218);
    0x000160c4 mov r0, r4                        |     r0 = r4;
    0x000160c8 add r1, pc, r1                    |     r1 = pc + r1;
    0x000160cc bl 0x3aac                         |     r0 = strcmp (r0, r1);
    0x000160d0 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x000160d4 beq 0x160f0                       |         
    0x000160d8 ldr r1, [pc, 0x140]               |         r1 = *(0x1621c);
    0x000160dc mov r0, r4                        |         r0 = r4;
    0x000160e0 add r1, pc, r1                    |         r1 = pc + r1;
    0x000160e4 bl 0x3aac                         |         r0 = strcmp (r0, r1);
    0x000160e8 cmp r0, 0                         |         
                                                 |         if (r0 != 0) {
    0x000160ec bne 0x16100                       |             goto label_13;
                                                 |         }
                                                 |     }
    0x000160f0 ldr r3, [pc, 0x12c]               |     r3 = *(0x16220);
    0x000160f4 mov r2, 3                         |     r2 = 3;
    0x000160f8 add r3, pc, r3                    |     r3 = pc + r3;
    0x000160fc b 0x15ecc                         |     goto label_2;
                                                 | label_13:
    0x00016100 ldr r1, [pc, 0x120]               |     r1 = *(0x16224);
    0x00016104 mov r0, r4                        |     r0 = r4;
    0x00016108 add r1, pc, r1                    |     r1 = pc + r1;
    0x0001610c bl 0x3aac                         |     r0 = strcmp (r0, r1);
    0x00016110 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00016114 beq 0x16130                       |         
    0x00016118 ldr r1, [pc, 0x10c]               |         r1 = *(0x16228);
    0x0001611c mov r0, r4                        |         r0 = r4;
    0x00016120 add r1, pc, r1                    |         r1 = pc + r1;
    0x00016124 bl 0x3aac                         |         r0 = strcmp (r0, r1);
    0x00016128 cmp r0, 0                         |         
                                                 |         if (r0 != 0) {
    0x0001612c bne 0x16144                       |             goto label_14;
                                                 |         }
                                                 |     }
    0x00016130 ldr r3, [pc, 0xf8]                |     r3 = *(0x1622c);
    0x00016134 mov r2, 4                         |     r2 = 4;
    0x00016138 add r3, pc, r3                    |     r3 = pc + r3;
                                                 | label_4:
    0x0001613c str r2, [r3, 0x14]                |     *((r3 + 0x14)) = r2;
    0x00016140 b 0x15ed0                         |     goto label_3;
                                                 | label_14:
    0x00016144 ldr r1, [pc, 0xe8]                |     r1 = *(0x16230);
    0x00016148 mov r0, r4                        |     r0 = r4;
    0x0001614c add r1, pc, r1                    |     r1 = pc + r1;
    0x00016150 bl 0x3aac                         |     r0 = strcmp (r0, r1);
    0x00016154 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x00016158 beq 0x16174                       |         goto label_15;
                                                 |     }
    0x0001615c ldr r1, [pc, 0xd4]                |     r1 = *(0x16234);
    0x00016160 mov r0, r4                        |     r0 = r4;
    0x00016164 add r1, pc, r1                    |     r1 = pc + r1;
    0x00016168 bl 0x3aac                         |     r0 = strcmp (r0, r1);
    0x0001616c cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00016170 bne 0x15ed0                       |         goto label_3;
                                                 |     }
                                                 | label_15:
    0x00016174 ldr r3, [pc, 0xc0]                |     r3 = *(0x16238);
    0x00016178 mov r2, 5                         |     r2 = 5;
    0x0001617c add r3, pc, r3                    |     r3 = pc + r3;
    0x00016180 b 0x1613c                         |     goto label_4;
                                                 | label_9:
    0x00016184 ldr r2, [r4, -0xc]                |     r2 = *((r4 - 0xc));
    0x00016188 mov r1, 0x200                     |     r1 = 0x200;
    0x0001618c str r2, [sp]                      |     *(sp) = r2;
    0x00016190 mov r0, r5                        |     r0 = r5;
    0x00016194 mov r2, r6                        |     r2 = r6;
    0x00016198 bl 0x3638                         |     snprintf (r0, r1, r2, r3)
    0x0001619c mov r1, r5                        |     r1 = r5;
    0x000161a0 mov r0, 3                         |     r0 = 3;
    0x000161a4 bl 0x15904                        |     fcn_00015904 (r0, r1);
    0x000161a8 b 0x15f10                         |     goto label_5;
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x16a9c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00016a9c ()                                      | void fcn_00016a9c (int32_t arg_1h, int32_t arg_48h, int32_t arg_4ch, int32_t arg_50h, int32_t arg_54h, int32_t arg_58h, int32_t arg_5ch, int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00016a9c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x00016aa0 ldr r5, [pc, 0x2dc]                               |     r5 = *(0x16d80);
    0x00016aa4 sub sp, sp, 0x24                                  |     
    0x00016aa8 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00016aac ldr r0, [pc, 0x2d4]                               |     
    0x00016ab0 str r1, [sp, 8]                                   |     var_8h = r1;
    0x00016ab4 add r0, pc, r0                                    |     r0 = pc + r0;
    0x00016ab8 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x00016abc mov r4, 0                                         |     r4 = 0;
    0x00016ac0 mov r2, 3                                         |     r2 = 3;
    0x00016ac4 ldr r1, [pc, 0x2c0]                               |     r1 = *(0x16d88);
    0x00016ac8 add r0, r0, 0x7f                                  |     r0 = 0x16e03;
    0x00016acc mov fp, r3                                        |     
    0x00016ad0 str r4, [sp, 0x1c]                                |     var_1ch = r4;
    0x00016ad4 bl 0x1e0d4                                        |     fcn_0001e0d4 (r0, r1);
    0x00016ad8 ldr r3, [pc, 0x2b0]                               |     r3 = *(0x16d8c);
    0x00016adc add r5, pc, r5                                    |     r5 = pc + r5;
    0x00016ae0 ldr r3, [r5, r3]                                  |     r3 = *(0x16d80);
    0x00016ae4 add r1, sp, 0x14                                  |     r1 += var_14h;
    0x00016ae8 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00016aec ldr r3, [pc, 0x2a0]                               |     r3 = *(0x16d90);
    0x00016af0 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00016af4 ldr r3, [r5, r3]                                  |     
    0x00016af8 ldr r3, [r3]                                      |     r3 = *(0x16d80);
    0x00016afc ldr r0, [r3, 4]                                   |     r0 = *(0x16d84);
    0x00016b00 bl 0x1b124                                        |     fcn_0001b124 (r0, r1);
    0x00016b04 ldr sb, [r0, 8]                                   |     sb = *(0x16d8c);
    0x00016b08 ldr r3, [sb, 0x84]                                |     r3 = *(0x16e10);
    0x00016b0c cmp r3, r4                                        |     
                                                                 |     if (r3 == r4) {
    0x00016b10 beq 0x16b3c                                       |         goto label_1;
                                                                 |     }
    0x00016b14 ldr r7, [pc, 0x27c]                               |     r7 = *(0x16d94);
    0x00016b18 mov r2, 0xb                                       |     r2 = 0xb;
    0x00016b1c add r7, pc, r7                                    |     r7 = pc + r7;
    0x00016b20 ldr r1, [pc, 0x274]                               |     r1 = *(0x16d98);
    0x00016b24 mov r0, r7                                        |     r0 = r7;
    0x00016b28 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x00016b2c subs r6, r0, 0                                    |     r6 = r0 - 0;
    0x00016b30 bne 0x16b64                                       |     
                                                                 |     while (1) {
    0x00016b34 mvn r3, 0x62                                      |         r3 = ~0x62;
    0x00016b38 str r3, [sp, 0x1c]                                |         var_1ch = r3;
                                                                 | label_1:
    0x00016b3c ldr r0, [pc, 0x25c]                               |         
    0x00016b40 mov r3, 3                                         |         r3 = 3;
    0x00016b44 add r0, pc, r0                                    |         r0 = pc + r0;
    0x00016b48 add r2, sp, 0x1c                                  |         r2 += var_1ch;
    0x00016b4c ldr r1, [pc, 0x250]                               |         r1 = *(0x16da0);
    0x00016b50 add r0, r0, 0x7f                                  |         r0 = 0x16e1b;
    0x00016b54 bl 0x1e1bc                                        |         fcn_0001e1bc (r0, r1);
    0x00016b58 ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x00016b5c add sp, sp, 0x24                                  |         
    0x00016b60 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
    0x00016b64 add sl, fp, 1                                     |         sl += arg_1h;
    0x00016b68 lsl r8, sl, 2                                     |         r8 = sl << 2;
    0x00016b6c mov r2, r8                                        |         r2 = r8;
    0x00016b70 mov r1, 0x1c8                                     |         r1 = 0x1c8;
    0x00016b74 mov r0, r7                                        |         r0 = r7;
    0x00016b78 bl 0x1e7a4                                        |         r0 = fcn_0001e7a4 (r0, r1);
    0x00016b7c subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 != r0) {
    0x00016b80 bne 0x16b98                                       |             goto label_5;
                                                                 |         }
    0x00016b84 ldr r1, [pc, 0x21c]                               |         r1 = *(0x16da4);
    0x00016b88 mov r2, r6                                        |         r2 = r6;
                                                                 | label_0:
    0x00016b8c mov r0, r7                                        |         r0 = r7;
    0x00016b90 bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
    0x00016b94 b 0x16b34                                         |         
                                                                 |     }
                                                                 | label_5:
    0x00016b98 mov r2, r8                                        |     r2 = r8;
    0x00016b9c ldr r1, [pc, 0x208]                               |     r1 = *(0x16da8);
    0x00016ba0 mov r0, r7                                        |     r0 = r7;
    0x00016ba4 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x00016ba8 subs r8, r0, 0                                    |     r8 = r0 - 0;
                                                                 |     if (r8 == r0) {
    0x00016bac bne 0x16bcc                                       |         
    0x00016bb0 mov r2, r6                                        |         r2 = r6;
    0x00016bb4 mov r1, 0x1d0                                     |         r1 = 0x1d0;
    0x00016bb8 mov r0, r7                                        |         r0 = r7;
    0x00016bbc bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
    0x00016bc0 mov r2, r5                                        |         r2 = r5;
    0x00016bc4 ldr r1, [pc, 0x1e4]                               |         r1 = *(0x16dac);
    0x00016bc8 b 0x16b8c                                         |         goto label_0;
                                                                 |     }
    0x00016bcc ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00016bd0 mov r2, r8                                        |     r2 = r8;
    0x00016bd4 str r3, [r5]                                      |     *(r5) = r3;
    0x00016bd8 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00016bdc str r3, [r8]                                      |     *(r8) = r3;
    0x00016be0 mov r3, r5                                        |     r3 = r5;
                                                                 |     do {
    0x00016be4 cmp r4, fp                                        |         
                                                                 |         if (r4 >= fp) {
    0x00016be8 blt 0x16cdc                                       |             
    0x00016bec ldr r3, [sp, 0x58]                                |             r3 = *(arg_58h);
    0x00016bf0 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x00016bf4 bne 0x16d44                                       |                 goto label_6;
                                                                 |             }
    0x00016bf8 ldr r3, [sp, 0x50]                                |             r3 = *(arg_50h);
    0x00016bfc cmp r3, 3                                         |             
                                                                 |             if (r3 != 3) {
    0x00016c00 bne 0x16cfc                                       |                 goto label_7;
                                                                 |             }
    0x00016c04 ldr r3, [sp, 0x5c]                                |             r3 = *(arg_5ch);
    0x00016c08 cmp r3, 4                                         |             
                                                                 |             if (r3 <= 4) {
    0x00016c0c ble 0x16d20                                       |                 goto label_8;
                                                                 |             }
    0x00016c10 ldr r3, [pc, 0x19c]                               |             r3 = *(0x16db0);
    0x00016c14 add r3, pc, r3                                    |             r3 = pc + r3;
                                                                 | label_2:
    0x00016c18 ldr r2, [sp, 0x54]                                |             r2 = *(arg_54h);
    0x00016c1c str r2, [sp]                                      |             *(sp) = r2;
    0x00016c20 ldr r2, [pc, 0x190]                               |             r2 = *(0x16db4);
    0x00016c24 add r2, pc, r2                                    |             r2 = pc + r2;
                                                                 | label_4:
    0x00016c28 mov r1, 0xb                                       |             r1 = 0xb;
    0x00016c2c mov r0, r6                                        |             r0 = r6;
    0x00016c30 bl 0x3638                                         |             r0 = snprintf (r0, r1, r2, r3)
    0x00016c34 cmp r0, 0xa                                       |             
                                                                 |             if (r0 <= 0xa) {
    0x00016c38 mvngt r3, 1                                       |                 r3 = ~1;
                                                                 |             }
                                                                 |             if (r0 <= 0xa) {
    0x00016c3c strgt r3, [sp, 0x1c]                              |                 var_1ch = r3;
                                                                 |             }
                                                                 | label_3:
    0x00016c40 ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x00016c44 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x00016c48 bne 0x16c70                                       |                 
    0x00016c4c ldr r4, [sb, 0x88]                                |                 r4 = *((sb + 0x88));
    0x00016c50 cmp r4, 0                                         |                 
                                                                 |                 if (r4 == 0) {
    0x00016c54 beq 0x16c70                                       |                     goto label_9;
                                                                 |                 }
    0x00016c58 mov r3, r5                                        |                 r3 = r5;
    0x00016c5c mov r2, r8                                        |                 r2 = r8;
    0x00016c60 mov r1, sl                                        |                 r1 = sl;
    0x00016c64 ldr r0, [sb, 0x90]                                |                 r0 = *((sb + 0x90));
    0x00016c68 blx r4                                            |                 uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00016c6c str r0, [sp, 0x1c]                                |                 var_1ch = r0;
                                                                 |             }
                                                                 | label_9:
    0x00016c70 ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x00016c74 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x00016c78 bne 0x16ca0                                       |                 
    0x00016c7c ldr r3, [sb, 0x84]                                |                 r3 = *((sb + 0x84));
    0x00016c80 mov r2, sl                                        |                 r2 = sl;
    0x00016c84 str r5, [sp]                                      |                 *(sp) = r5;
    0x00016c88 mov r1, r6                                        |                 r1 = r6;
    0x00016c8c ldr r4, [r3, 0xc]                                 |                 r4 = *((r3 + 0xc));
    0x00016c90 ldr r0, [sb, 0x80]                                |                 r0 = *((sb + 0x80));
    0x00016c94 mov r3, r8                                        |                 r3 = r8;
    0x00016c98 blx r4                                            |                 uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00016c9c str r0, [sp, 0x1c]                                |                 var_1ch = r0;
                                                                 |             }
    0x00016ca0 ldr r4, [pc, 0x114]                               |             r4 = *(0x16db8);
    0x00016ca4 mov r2, r6                                        |             r2 = r6;
    0x00016ca8 add r4, pc, r4                                    |             r4 = pc + r4;
    0x00016cac mov r0, r4                                        |             r0 = r4;
    0x00016cb0 ldr r1, [pc, 0x108]                               |             r1 = *(0x16dbc);
    0x00016cb4 bl 0x1e960                                        |             fcn_0001e960 (r0, r1);
    0x00016cb8 mov r2, r5                                        |             r2 = r5;
    0x00016cbc mov r0, r4                                        |             r0 = r4;
    0x00016cc0 ldr r1, [pc, 0xfc]                                |             r1 = *(0x16dc0);
    0x00016cc4 bl 0x1e960                                        |             fcn_0001e960 (r0, r1);
    0x00016cc8 mov r2, r8                                        |             r2 = r8;
    0x00016ccc ldr r1, [pc, 0xf4]                                |             r1 = *(0x16dc4);
    0x00016cd0 mov r0, r4                                        |             r0 = r4;
    0x00016cd4 bl 0x1e960                                        |             fcn_0001e960 (r0, r1);
    0x00016cd8 b 0x16b3c                                         |             goto label_1;
                                                                 |         }
    0x00016cdc ldr r1, [sp, 0x4c]                                |         r1 = *(arg_4ch);
    0x00016ce0 ldr r1, [r1, r4, lsl 2]                           |         offset_0 = r4 << 2;
                                                                 |         r1 = *((r1 + offset_0));
    0x00016ce4 str r1, [r3, 4]!                                  |         *((r3 += 4)) = r1;
    0x00016ce8 ldr r1, [sp, 0x48]                                |         r1 = *(arg_48h);
    0x00016cec ldr r1, [r1, r4, lsl 2]                           |         offset_1 = r4 << 2;
                                                                 |         r1 = *((r1 + offset_1));
    0x00016cf0 add r4, r4, 1                                     |         r4++;
    0x00016cf4 str r1, [r2, 4]!                                  |         *((r2 += 4)) = r1;
    0x00016cf8 b 0x16be4                                         |         
                                                                 |     } while (1);
                                                                 | label_7:
    0x00016cfc ldr r3, [sp, 0x50]                                |     r3 = *(arg_50h);
    0x00016d00 cmp r3, 6                                         |     
                                                                 |     if (r3 == 6) {
    0x00016d04 bne 0x16d2c                                       |         
    0x00016d08 ldr r3, [sp, 0x5c]                                |         r3 = *(arg_5ch);
    0x00016d0c cmp r3, 4                                         |         
                                                                 |         if (r3 > 4) {
    0x00016d10 bgt 0x16d38                                       |             goto label_10;
                                                                 |         }
    0x00016d14 ldr r3, [pc, 0xb0]                                |         r3 = *(0x16dc8);
    0x00016d18 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00016d1c b 0x16c18                                         |         goto label_2;
                                                                 | label_8:
    0x00016d20 ldr r3, [pc, 0xa8]                                |         r3 = *(0x16dcc);
    0x00016d24 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00016d28 b 0x16c18                                         |         goto label_2;
                                                                 |     }
    0x00016d2c ldr r3, [pc, 0xa0]                                |     r3 = *(0x16dd0);
    0x00016d30 add r3, pc, r3                                    |     r3 = pc + r3;
    0x00016d34 b 0x16c18                                         |     goto label_2;
                                                                 | label_10:
    0x00016d38 ldr r3, [pc, 0x98]                                |     r3 = *(0x16dd4);
    0x00016d3c add r3, pc, r3                                    |     r3 = pc + r3;
    0x00016d40 b 0x16c18                                         |     goto label_2;
                                                                 | label_6:
    0x00016d44 ldr r3, [sp, 0x58]                                |     r3 = *(arg_58h);
    0x00016d48 cmp r3, 1                                         |     
                                                                 |     if (r3 != 1) {
    0x00016d4c bne 0x16c40                                       |         goto label_3;
                                                                 |     }
    0x00016d50 ldr r3, [sp, 0x5c]                                |     r3 = *(arg_5ch);
    0x00016d54 cmp r3, 4                                         |     
                                                                 |     if (r3 <= 4) {
    0x00016d58 ble 0x16d78                                       |         goto label_11;
                                                                 |     }
    0x00016d5c ldr r3, [pc, 0x78]                                |     r3 = *(0x16dd8);
    0x00016d60 add r3, pc, r3                                    |     r3 = pc + r3;
                                                                 |     do {
    0x00016d64 ldr r2, [sp, 0x54]                                |         r2 = *(arg_54h);
    0x00016d68 str r2, [sp]                                      |         *(sp) = r2;
    0x00016d6c ldr r2, [pc, 0x6c]                                |         r2 = *(0x16ddc);
    0x00016d70 add r2, pc, r2                                    |         r2 = pc + r2;
    0x00016d74 b 0x16c28                                         |         goto label_4;
                                                                 | label_11:
    0x00016d78 ldr r3, [pc, 0x64]                                |         r3 = *(0x16de0);
    0x00016d7c add r3, pc, r3                                    |         r3 = pc + r3;
    0x00016d80 b 0x16d64                                         |         
                                                                 |     } while (1);
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x16de8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00016de8 ()                                      | void fcn_00016de8 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00016de8 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}     |     
    0x00016dec mov r5, r0                                        |     r5 = r0;
    0x00016df0 ldr r0, [pc, 0x264]                               |     
    0x00016df4 mov r6, r1                                        |     r6 = r1;
    0x00016df8 add r0, pc, r0                                    |     r0 = pc + r0;
    0x00016dfc mov r7, r3                                        |     r7 = r3;
    0x00016e00 mov r2, 3                                         |     r2 = 3;
    0x00016e04 mov r3, 0                                         |     r3 = 0;
    0x00016e08 ldr r1, [pc, 0x250]                               |     r1 = *(0x1705c);
    0x00016e0c add r0, r0, 0x99                                  |     r0 = 0x170f1;
    0x00016e10 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00016e14 bl 0x1e0d4                                        |     fcn_0001e0d4 (r0, r1);
    0x00016e18 ldr r3, [r5, 0x84]                                |     r3 = *((r5 + 0x84));
    0x00016e1c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00016e20 beq 0x16ee8                                       |         goto label_3;
                                                                 |     }
    0x00016e24 ldr r0, [pc, 0x238]                               |     r0 = *(0x17060);
    0x00016e28 mov r2, 0xb                                       |     r2 = 0xb;
    0x00016e2c ldr r1, [pc, 0x234]                               |     r1 = *(0x17064);
    0x00016e30 add r0, pc, r0                                    |     r0 = pc + r0;
    0x00016e34 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x00016e38 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 != r0) {
    0x00016e3c mvneq r3, 0x62                                    |         r3 = ~0x62;
                                                                 |     }
                                                                 |     if (r4 != r0) {
    0x00016e40 streq r3, [sp, 0xc]                               |         var_ch = r3;
                                                                 |     }
                                                                 |     if (r4 == r0) {
    0x00016e44 beq 0x16ee8                                       |         goto label_3;
                                                                 |     }
    0x00016e48 ldr r1, [pc, 0x21c]                               |     r1 = *(0x17068);
    0x00016e4c mov r0, r6                                        |     r0 = r6;
    0x00016e50 add r1, pc, r1                                    |     r1 = pc + r1;
    0x00016e54 bl 0x3aac                                         |     r0 = strcmp (r0, r1);
    0x00016e58 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00016e5c beq 0x16e78                                       |         
    0x00016e60 ldr r1, [pc, 0x208]                               |         r1 = *(0x1706c);
    0x00016e64 mov r0, r6                                        |         r0 = r6;
    0x00016e68 add r1, pc, r1                                    |         r1 = pc + r1;
    0x00016e6c bl 0x3aac                                         |         r0 = strcmp (r0, r1);
    0x00016e70 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00016e74 bne 0x17004                                       |             goto label_4;
                                                                 |         }
                                                                 |     }
    0x00016e78 ldr r8, [pc, 0x1f4]                               |     r8 = *(0x17070);
    0x00016e7c ldr r3, [pc, 0x1f4]                               |     r3 = *(0x17074);
    0x00016e80 add r8, pc, r8                                    |     r8 = pc + r8;
    0x00016e84 str r7, [sp]                                      |     *(sp) = r7;
    0x00016e88 add r3, pc, r3                                    |     r3 = pc + r3;
    0x00016e8c mov r2, r8                                        |     r2 = r8;
    0x00016e90 mov r1, 0xb                                       |     r1 = 0xb;
    0x00016e94 mov r0, r4                                        |     r0 = r4;
    0x00016e98 bl 0x3638                                         |     r0 = snprintf (r0, r1, r2, r3)
    0x00016e9c cmp r0, 0xa                                       |     
    0x00016ea0 mov r6, r0                                        |     r6 = r0;
    0x00016ea4 ble 0x16f10                                       |     
                                                                 |     while (r0 > 0xa) {
                                                                 | label_0:
    0x00016ea8 mvn r3, 1                                         |         r3 = ~1;
    0x00016eac str r3, [sp, 0xc]                                 |         var_ch = r3;
                                                                 | label_1:
    0x00016eb0 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00016eb4 cmn r3, 2                                         |         
                                                                 |         if (r3 == 2) {
    0x00016eb8 bne 0x16ed4                                       |             
    0x00016ebc ldr r2, [pc, 0x1b8]                               |             r2 = *(0x17078);
    0x00016ec0 mov r3, r6                                        |             r3 = r6;
    0x00016ec4 add r2, pc, r2                                    |             r2 = pc + r2;
    0x00016ec8 mov r1, 0                                         |             r1 = 0;
    0x00016ecc mov r0, 5                                         |             r0 = 5;
    0x00016ed0 bl 0x16364                                        |             fcn_00016364 (r0, r1, r2, r3);
                                                                 |         }
    0x00016ed4 ldr r0, [pc, 0x1a4]                               |         r0 = *(0x1707c);
    0x00016ed8 mov r2, r4                                        |         r2 = r4;
    0x00016edc ldr r1, [pc, 0x1a0]                               |         r1 = *(0x17080);
    0x00016ee0 add r0, pc, r0                                    |         r0 = pc + r0;
    0x00016ee4 bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
                                                                 | label_3:
    0x00016ee8 ldr r0, [pc, 0x198]                               |         
    0x00016eec mov r3, 3                                         |         r3 = 3;
    0x00016ef0 add r0, pc, r0                                    |         r0 = pc + r0;
    0x00016ef4 add r2, sp, 0xc                                   |         r2 += var_ch;
    0x00016ef8 ldr r1, [pc, 0x18c]                               |         r1 = *(0x17088);
    0x00016efc add r0, r0, 0x99                                  |         r0 = 0x1711d;
    0x00016f00 bl 0x1e1bc                                        |         fcn_0001e1bc (r0, r1);
    0x00016f04 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x00016f08 add sp, sp, 0x10                                  |         
    0x00016f0c pop {r4, r5, r6, r7, r8, pc}                      |         
    0x00016f10 ldr r3, [r5, 0x84]                                |         r3 = *((r5 + 0x84));
    0x00016f14 mov r1, r4                                        |         r1 = r4;
    0x00016f18 ldr r3, [r3, 0x14]                                |         r3 = *((r3 + 0x14));
    0x00016f1c ldr r0, [r5, 0x80]                                |         r0 = *((r5 + 0x80));
    0x00016f20 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00016f24 ldr r3, [pc, 0x164]                               |         r3 = *(0x1708c);
    0x00016f28 str r7, [sp]                                      |         *(sp) = r7;
    0x00016f2c add r3, pc, r3                                    |         r3 = pc + r3;
    0x00016f30 mov r2, r8                                        |         r2 = r8;
    0x00016f34 mov r1, 0xb                                       |         r1 = 0xb;
    0x00016f38 str r0, [sp, 0xc]                                 |         var_ch = r0;
    0x00016f3c mov r0, r4                                        |         r0 = r4;
    0x00016f40 bl 0x3638                                         |         r0 = snprintf (r0, r1, r2, r3)
    0x00016f44 cmp r0, 0xa                                       |         
    0x00016f48 mov r6, r0                                        |         r6 = r0;
    0x00016f4c bgt 0x16ea8                                       |         
                                                                 |     }
    0x00016f50 ldr r3, [r5, 0x84]                                |     r3 = *((r5 + 0x84));
    0x00016f54 mov r1, r4                                        |     r1 = r4;
    0x00016f58 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00016f5c ldr r0, [r5, 0x80]                                |     r0 = *((r5 + 0x80));
    0x00016f60 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00016f64 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00016f68 str r7, [sp]                                      |     *(sp) = r7;
    0x00016f6c mov r2, r8                                        |     r2 = r8;
    0x00016f70 mov r1, 0xb                                       |     r1 = 0xb;
    0x00016f74 add r0, r3, r0                                    |     r0 = r3 + r0;
    0x00016f78 ldr r3, [pc, 0x114]                               |     r3 = *(0x17090);
    0x00016f7c str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00016f80 add r3, pc, r3                                    |     r3 = pc + r3;
    0x00016f84 mov r0, r4                                        |     r0 = r4;
    0x00016f88 bl 0x3638                                         |     r0 = snprintf (r0, r1, r2, r3)
    0x00016f8c cmp r0, 0xa                                       |     
    0x00016f90 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 > 0xa) {
    0x00016f94 bgt 0x16ea8                                       |         goto label_0;
                                                                 |     }
    0x00016f98 ldr r3, [r5, 0x84]                                |     r3 = *((r5 + 0x84));
    0x00016f9c mov r1, r4                                        |     r1 = r4;
    0x00016fa0 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00016fa4 ldr r0, [r5, 0x80]                                |     r0 = *((r5 + 0x80));
    0x00016fa8 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00016fac ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00016fb0 str r7, [sp]                                      |     *(sp) = r7;
    0x00016fb4 add r0, r3, r0                                    |     r0 = r3 + r0;
    0x00016fb8 ldr r3, [pc, 0xd8]                                |     r3 = *(0x17094);
    0x00016fbc str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00016fc0 add r3, pc, r3                                    |     r3 = pc + r3;
                                                                 | label_2:
    0x00016fc4 mov r2, r8                                        |     r2 = r8;
    0x00016fc8 mov r1, 0xb                                       |     r1 = 0xb;
    0x00016fcc mov r0, r4                                        |     r0 = r4;
    0x00016fd0 bl 0x3638                                         |     r0 = snprintf (r0, r1, r2, r3)
    0x00016fd4 cmp r0, 0xa                                       |     
    0x00016fd8 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 > 0xa) {
    0x00016fdc bgt 0x16ea8                                       |         goto label_0;
                                                                 |     }
    0x00016fe0 ldr r3, [r5, 0x84]                                |     r3 = *((r5 + 0x84));
    0x00016fe4 mov r1, r4                                        |     r1 = r4;
    0x00016fe8 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00016fec ldr r0, [r5, 0x80]                                |     r0 = *((r5 + 0x80));
    0x00016ff0 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00016ff4 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00016ff8 add r0, r3, r0                                    |     r0 = r3 + r0;
    0x00016ffc str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00017000 b 0x16eb0                                         |     goto label_1;
                                                                 | label_4:
    0x00017004 ldr r8, [pc, 0x90]                                |     r8 = *(0x17098);
    0x00017008 ldr r3, [pc, 0x90]                                |     r3 = *(0x1709c);
    0x0001700c add r8, pc, r8                                    |     r8 = pc + r8;
    0x00017010 str r7, [sp]                                      |     *(sp) = r7;
    0x00017014 add r3, pc, r3                                    |     r3 = pc + r3;
    0x00017018 mov r2, r8                                        |     r2 = r8;
    0x0001701c mov r1, 0xb                                       |     r1 = 0xb;
    0x00017020 mov r0, r4                                        |     r0 = r4;
    0x00017024 bl 0x3638                                         |     r0 = snprintf (r0, r1, r2, r3)
    0x00017028 cmp r0, 0xa                                       |     
    0x0001702c mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 > 0xa) {
    0x00017030 bgt 0x16ea8                                       |         goto label_0;
                                                                 |     }
    0x00017034 ldr r3, [r5, 0x84]                                |     r3 = *((r5 + 0x84));
    0x00017038 mov r1, r4                                        |     r1 = r4;
    0x0001703c ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x00017040 ldr r0, [r5, 0x80]                                |     r0 = *((r5 + 0x80));
    0x00017044 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00017048 ldr r3, [pc, 0x54]                                |     r3 = *(0x170a0);
    0x0001704c str r7, [sp]                                      |     *(sp) = r7;
    0x00017050 add r3, pc, r3                                    |     r3 = pc + r3;
    0x00017054 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00017058 b 0x16fc4                                         |     goto label_2;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x171b4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000171b4 ()                                  | void fcn_000171b4 (int32_t arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     char * s2;
                                                             |     char * var_10h;
                                                             |     char * var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_34h;
                                                             |     r0 = arg1;
    0x000171b4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000171b8 mov r4, r0                                    |     r4 = r0;
    0x000171bc ldr r0, [pc, 0x62c]                           |     
    0x000171c0 mov r3, 0                                     |     r3 = 0;
    0x000171c4 add r0, pc, r0                                |     r0 = pc + r0;
    0x000171c8 sub sp, sp, 0x34                              |     
    0x000171cc mov r2, 3                                     |     r2 = 3;
    0x000171d0 mov r1, 0xc3                                  |     r1 = 0xc3;
    0x000171d4 add r0, r0, 0xca                              |     r0 = 0x178b6;
    0x000171d8 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x000171dc str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x000171e0 str r3, [sp, 0x20]                            |     var_20h = r3;
    0x000171e4 bl 0x1e0d4                                    |     fcn_0001e0d4 (r0, r1);
    0x000171e8 ldr r3, [r4, 0x84]                            |     r3 = *((r4 + 0x84));
    0x000171ec cmp r3, 0                                     |     
    0x000171f0 bne 0x1722c                                   |     
                                                             |     while (r0 != 0) {
    0x000171f4 mov r6, 0                                     |         r6 = 0;
    0x000171f8 mov r5, r6                                    |         r5 = r6;
                                                             | label_1:
    0x000171fc ldr r3, [r4]                                  |         r3 = *(r4);
    0x00017200 ldr r2, [pc, 0x5ec]                           |         r2 = *(0x177f0);
    0x00017204 str r3, [sp, 4]                               |         var_4h = r3;
    0x00017208 str r6, [sp]                                  |         *(sp) = r6;
    0x0001720c mov r3, r5                                    |         r3 = r5;
    0x00017210 add r2, pc, r2                                |         r2 = pc + r2;
    0x00017214 mvn r1, 0                                     |         r1 = ~0;
    0x00017218 mov r0, 3                                     |         r0 = 3;
    0x0001721c bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
    0x00017220 mov r0, r4                                    |         r0 = r4;
    0x00017224 bl 0x170a8                                    |         fcn_000170a8 (r0);
    0x00017228 b 0x173a4                                     |         goto label_9;
    0x0001722c ldr r3, [r3, 0x18]                            |         r3 = *((r3 + 0x18));
    0x00017230 add r2, sp, 0x24                              |         r2 += var_24h;
    0x00017234 add r1, sp, 0x1c                              |         r1 += var_1ch;
    0x00017238 ldr r0, [r4, 0x80]                            |         r0 = *((r4 + 0x80));
    0x0001723c blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00017240 cmp r0, 0                                     |         
    0x00017244 mov r5, r0                                    |         r5 = r0;
    0x00017248 str r0, [sp, 0x18]                            |         var_18h = r0;
    0x0001724c bne 0x171f4                                   |         
                                                             |     }
    0x00017250 ldr r3, [pc, 0x5a0]                           |     r3 = *(0x177f4);
    0x00017254 mov r6, r0                                    |     r6 = r0;
    0x00017258 add r3, pc, r3                                |     r3 = pc + r3;
    0x0001725c str r3, [sp, 0xc]                             |     s2 = r3;
    0x00017260 ldr r3, [pc, 0x594]                           |     r3 = *(0x177f8);
    0x00017264 mov r7, r0                                    |     r7 = r0;
    0x00017268 add r3, pc, r3                                |     r3 = pc + r3;
    0x0001726c str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00017270 ldr r3, [pc, 0x588]                           |     r3 = *(0x177fc);
    0x00017274 add r3, pc, r3                                |     r3 = pc + r3;
    0x00017278 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x0001727c b 0x17430                                     |     goto label_10;
                                                             | label_0:
    0x00017280 ldr r8, [r2, r7, lsl 2]                       |     offset_0 = r7 << 2;
                                                             |     r8 = *((r2 + offset_0));
    0x00017284 ldr r1, [sp, 0xc]                             |     r1 = s2;
    0x00017288 mov r2, 2                                     |     r2 = 2;
    0x0001728c mov r0, r8                                    |     r0 = r8;
    0x00017290 bl 0x35a8                                     |     strncmp (r0, r1, r2);
    0x00017294 lsl fp, r7, 2                                 |     
    0x00017298 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001729c beq 0x173e8                                   |         goto label_3;
                                                             |     }
    0x000172a0 mov r2, 3                                     |     r2 = 3;
    0x000172a4 ldr r1, [sp, 0x10]                            |     r1 = var_10h;
    0x000172a8 mov r0, r8                                    |     r0 = r8;
    0x000172ac bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x000172b0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000172b4 beq 0x173e8                                   |         goto label_3;
                                                             |     }
    0x000172b8 mov r2, 2                                     |     r2 = 2;
    0x000172bc ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x000172c0 mov r0, r8                                    |     r0 = r8;
    0x000172c4 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x000172c8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000172cc beq 0x173e8                                   |         goto label_3;
                                                             |     }
    0x000172d0 ldr r1, [pc, 0x52c]                           |     r1 = *(0x17800);
    0x000172d4 mov r2, 3                                     |     r2 = 3;
    0x000172d8 add r1, pc, r1                                |     r1 = pc + r1;
    0x000172dc mov r0, r8                                    |     r0 = r8;
    0x000172e0 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x000172e4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000172e8 beq 0x173e8                                   |         goto label_3;
                                                             |     }
    0x000172ec ldr r3, [r4, 0x84]                            |     r3 = *((r4 + 0x84));
    0x000172f0 add sl, sp, 0x28                              |     sl += var_28h;
    0x000172f4 ldr r3, [r3, 0x10]                            |     r3 = *((r3 + 0x10));
    0x000172f8 add sb, sp, 0x20                              |     sb += var_20h;
    0x000172fc mov ip, r3                                    |     
    0x00017300 mov r2, sb                                    |     r2 = sb;
    0x00017304 mov r3, sl                                    |     r3 = sl;
    0x00017308 mov r1, r8                                    |     r1 = r8;
    0x0001730c ldr r0, [r4, 0x80]                            |     r0 = *((r4 + 0x80));
    0x00017310 blx ip                                        |     r0 = ip (r0, r1, r2, r3);
    0x00017314 cmp r0, 0                                     |     
    0x00017318 str r0, [sp, 0x18]                            |     var_18h = r0;
                                                             |     if (r0 != 0) {
    0x0001731c bne 0x173e8                                   |         goto label_3;
                                                             |     }
    0x00017320 ldr r3, [r4, 0x8c]                            |     r3 = *((r4 + 0x8c));
    0x00017324 cmp r3, 0                                     |     
    0x00017328 bne 0x173cc                                   |     
                                                             |     while (r0 == 0) {
    0x0001732c ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00017330 ldr r1, [pc, 0x4d0]                           |         r1 = *(0x17804);
    0x00017334 ldr sb, [r3, fp]                              |         sb = *((r3 + fp));
    0x00017338 mov r2, 3                                     |         r2 = 3;
    0x0001733c add r1, pc, r1                                |         r1 = pc + r1;
    0x00017340 mov r0, sb                                    |         r0 = sb;
    0x00017344 bl 0x35a8                                     |         r0 = strncmp (r0, r1, r2);
    0x00017348 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0001734c beq 0x17468                                   |             goto label_11;
                                                             |         }
    0x00017350 ldr r1, [pc, 0x4b4]                           |         r1 = *(0x17808);
    0x00017354 mov r2, 3                                     |         r2 = 3;
    0x00017358 add r1, pc, r1                                |         r1 = pc + r1;
    0x0001735c mov r0, sb                                    |         r0 = sb;
    0x00017360 bl 0x35a8                                     |         r0 = strncmp (r0, r1, r2);
    0x00017364 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00017368 beq 0x17474                                   |             goto label_12;
                                                             |         }
    0x0001736c ldr r1, [pc, 0x49c]                           |         r1 = *(0x1780c);
    0x00017370 mov r2, 4                                     |         r2 = 4;
    0x00017374 add r1, pc, r1                                |         r1 = pc + r1;
    0x00017378 mov r0, sb                                    |         r0 = sb;
    0x0001737c bl 0x35a8                                     |         r0 = strncmp (r0, r1, r2);
    0x00017380 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00017384 bne 0x17480                                   |             goto label_13;
                                                             |         }
    0x00017388 ldr sb, [pc, 0x484]                           |         sb = *(0x00017814);
    0x0001738c add sb, pc, sb                                |         sb = pc + sb;
                                                             | label_2:
    0x00017390 ldr r3, [r4, 0x9c]                            |         r3 = *((r4 + 0x9c));
    0x00017394 cmp r3, 4                                     |         
                                                             |         if (r3 > 4) {
    0x00017398 bgt 0x1756c                                   |             goto label_14;
                                                             |         }
    0x0001739c mvn r3, 1                                     |         r3 = ~1;
                                                             | label_4:
    0x000173a0 str r3, [sp, 0x18]                            |         var_18h = r3;
                                                             | label_9:
    0x000173a4 ldr r0, [pc, 0x46c]                           |         
    0x000173a8 mov r3, 3                                     |         r3 = 3;
    0x000173ac add r0, pc, r0                                |         r0 = pc + r0;
    0x000173b0 add r2, sp, 0x18                              |         r2 += var_18h;
    0x000173b4 ldr r1, [pc, 0x460]                           |         r1 = *(0x17818);
    0x000173b8 add r0, r0, 0xca                              |         r0 = 0x178de;
    0x000173bc bl 0x1e1bc                                    |         fcn_0001e1bc (r0, r1);
    0x000173c0 ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x000173c4 add sp, sp, 0x34                              |         
    0x000173c8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
    0x000173cc mov r2, sl                                    |         r2 = sl;
    0x000173d0 mov r1, sb                                    |         r1 = sb;
    0x000173d4 ldr r0, [r4, 0x94]                            |         r0 = *((r4 + 0x94));
    0x000173d8 blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000173dc cmp r0, 0                                     |         
    0x000173e0 str r0, [sp, 0x18]                            |         var_18h = r0;
    0x000173e4 beq 0x1732c                                   |         
                                                             |     }
                                                             | label_3:
    0x000173e8 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x000173ec cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x000173f0 beq 0x1740c                                   |         
    0x000173f4 ldr r0, [pc, 0x424]                           |         r0 = *(0x1781c);
    0x000173f8 ldr r1, [pc, 0x424]                           |         r1 = *(0x17820);
    0x000173fc add r0, pc, r0                                |         r0 = pc + r0;
    0x00017400 bl 0x1e960                                    |         fcn_0001e960 (r0, r1);
    0x00017404 mov r3, 0                                     |         r3 = 0;
    0x00017408 str r3, [sp, 0x20]                            |         var_20h = r3;
                                                             |     }
    0x0001740c ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00017410 ldr r2, [r3, fp]                              |     r2 = *((r3 + fp));
    0x00017414 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00017418 beq 0x1742c                                   |         
    0x0001741c ldr r0, [pc, 0x404]                           |         r0 = *(0x17824);
    0x00017420 ldr r1, [pc, 0x404]                           |         r1 = *(0x17828);
    0x00017424 add r0, pc, r0                                |         r0 = pc + r0;
    0x00017428 bl 0x1e960                                    |         fcn_0001e960 (r0, r1);
                                                             |     }
    0x0001742c add r7, r7, 1                                 |     r7++;
                                                             | label_10:
    0x00017430 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00017434 ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x00017438 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0001743c bne 0x1744c                                   |         goto label_15;
                                                             |     }
    0x00017440 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00017444 cmp r3, r7                                    |     
                                                             |     if (r3 > r7) {
    0x00017448 bgt 0x17280                                   |         goto label_0;
                                                             |     }
                                                             | label_15:
    0x0001744c cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00017450 beq 0x171fc                                   |         goto label_1;
                                                             |     }
    0x00017454 ldr r0, [pc, 0x3d4]                           |     r0 = *(0x1782c);
    0x00017458 ldr r1, [pc, 0x3d4]                           |     r1 = *(0x17830);
    0x0001745c add r0, pc, r0                                |     r0 = pc + r0;
    0x00017460 bl 0x1e960                                    |     fcn_0001e960 (r0, r1);
    0x00017464 b 0x171fc                                     |     goto label_1;
                                                             | label_11:
    0x00017468 ldr sb, [pc, 0x3c8]                           |     sb = *(0x17834);
    0x0001746c add sb, pc, sb                                |     sb = pc + sb;
    0x00017470 b 0x17390                                     |     goto label_2;
                                                             | label_12:
    0x00017474 ldr sb, [pc, 0x3c0]                           |     sb = *(0x17838);
    0x00017478 add sb, pc, sb                                |     sb = pc + sb;
    0x0001747c b 0x17390                                     |     goto label_2;
                                                             | label_13:
    0x00017480 mov r0, 4                                     |     r0 = 4;
                                                             |     do {
    0x00017484 ldr r2, [sp, 0x28]                            |         r2 = var_28h;
    0x00017488 ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x0001748c bl 0x168ec                                    |         r0 = fcn_000168ec (r0, r1);
    0x00017490 subs r8, r0, 0                                |         r8 = r0 - 0;
                                                             |         if (r8 == r0) {
    0x00017494 beq 0x177d0                                   |             goto label_16;
                                                             |         }
    0x00017498 ldr r1, [pc, 0x3a0]                           |         r1 = *(0x1783c);
    0x0001749c mov r2, 2                                     |         r2 = 2;
    0x000174a0 add r1, pc, r1                                |         r1 = pc + r1;
    0x000174a4 mov r0, sb                                    |         r0 = sb;
    0x000174a8 bl 0x35a8                                     |         r0 = strncmp (r0, r1, r2);
    0x000174ac subs sl, r0, 0                                |         sl = r0 - 0;
                                                             |         if (sl != r0) {
    0x000174b0 bne 0x17574                                   |             goto label_17;
                                                             |         }
    0x000174b4 ldr r3, [r4, 0x9c]                            |         r3 = *((r4 + 0x9c));
    0x000174b8 add r1, sp, 0x30                              |         r1 += var_30h;
    0x000174bc str sl, [r1, -4]!                             |         *((r1 -= 4)) = sl;
    0x000174c0 str r3, [r8, 0x18]                            |         *((r8 + 0x18)) = r3;
    0x000174c4 ldrb r3, [r8]                                 |         r3 = *(r8);
    0x000174c8 mov r0, 1                                     |         r0 = 1;
    0x000174cc lsr r2, r3, 1                                 |         r2 = r3 >> 1;
    0x000174d0 str r0, [sp]                                  |         *(sp) = r0;
    0x000174d4 and r3, r3, r0                                |         r3 &= r0;
    0x000174d8 and r2, r2, 3                                 |         r2 &= 3;
    0x000174dc mov r0, r8                                    |         r0 = r8;
    0x000174e0 bl 0xed10                                     |         fcn_0000ed10 (r0, r1, r2);
    0x000174e4 mov r3, 6                                     |         r3 = 6;
    0x000174e8 str r0, [sp, 0x2c]                            |         var_2ch = r0;
    0x000174ec mov r1, r0                                    |         r1 = r0;
    0x000174f0 strb r3, [r0, 0x2c]                           |         *((r0 + 0x2c)) = r3;
    0x000174f4 ldr r2, [r0, 0x30]                            |         r2 = *((r0 + 0x30));
    0x000174f8 ldr r0, [r4, 0x70]                            |         r0 = *((r4 + 0x70));
    0x000174fc bl 0x1ae08                                    |         fcn_0001ae08 (r0, r1);
    0x00017500 ldr r3, [r4, 0x9c]                            |         r3 = *((r4 + 0x9c));
    0x00017504 cmp r3, 4                                     |         
                                                             |         if (r3 > 4) {
    0x00017508 ble 0x17554                                   |             
    0x0001750c ldr r3, [sp, 0x2c]                            |             r3 = var_2ch;
    0x00017510 ldr sb, [pc, 0x32c]                           |             sb = *(0x17840);
    0x00017514 ldr r3, [r3, 0x20]                            |             r3 = *((r3 + 0x20));
    0x00017518 add sb, pc, sb                                |             sb = pc + sb;
    0x0001751c ldr r2, [r3, 8]                               |             r2 = *((r3 + 8));
    0x00017520 ldr r1, [pc, 0x320]                           |             r1 = *(0x17844);
    0x00017524 mov r0, sb                                    |             r0 = sb;
    0x00017528 bl 0x1e960                                    |             fcn_0001e960 (r0, r1);
    0x0001752c ldr r3, [sp, 0x2c]                            |             r3 = var_2ch;
    0x00017530 ldr r1, [pc, 0x314]                           |             r1 = *(0x17848);
    0x00017534 ldr r3, [r3, 0x20]                            |             r3 = *((r3 + 0x20));
    0x00017538 mov r0, sb                                    |             r0 = sb;
    0x0001753c ldr r2, [r3]                                  |             r2 = *(r3);
    0x00017540 bl 0x1e960                                    |             fcn_0001e960 (r0, r1);
    0x00017544 ldr r3, [sp, 0x2c]                            |             r3 = var_2ch;
    0x00017548 ldr r3, [r3, 0x20]                            |             r3 = *((r3 + 0x20));
    0x0001754c str sl, [r3]                                  |             *(r3) = sl;
    0x00017550 str sl, [r3, 8]                               |             *((r3 + 8)) = sl;
                                                             |         }
    0x00017554 mov r3, 0                                     |         r3 = 0;
    0x00017558 str r3, [r8, 4]                               |         *((r8 + 4)) = r3;
    0x0001755c mov r0, r8                                    |         r0 = r8;
    0x00017560 bl 0x11c8c                                    |         fcn_00011c8c (r0);
    0x00017564 add r6, r6, 1                                 |         r6++;
    0x00017568 b 0x173e8                                     |         goto label_3;
                                                             | label_14:
    0x0001756c mov r0, 5                                     |         r0 = 5;
    0x00017570 b 0x17484                                     |         
                                                             |     } while (1);
                                                             | label_17:
    0x00017574 ldr sl, [pc, 0x2d4]                           |     sl = *(0x1784c);
    0x00017578 mov r2, 2                                     |     r2 = 2;
    0x0001757c add sl, pc, sl                                |     sl = pc + sl;
    0x00017580 mov r1, sl                                    |     r1 = sl;
    0x00017584 mov r0, sb                                    |     r0 = sb;
    0x00017588 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x0001758c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00017590 bne 0x176c8                                   |         goto label_18;
                                                             |     }
    0x00017594 str r0, [sp, 0x2c]                            |     var_2ch = r0;
    0x00017598 ldr r0, [pc, 0x2b4]                           |     r0 = *(0x17850);
    0x0001759c mov r2, 0xb                                   |     r2 = 0xb;
    0x000175a0 ldr r1, [pc, 0x2b0]                           |     r1 = *(0x17854);
    0x000175a4 add r0, pc, r0                                |     r0 = pc + r0;
    0x000175a8 bl 0x1e7a4                                    |     r0 = fcn_0001e7a4 (r0, r1);
    0x000175ac subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb == r0) {
    0x000175b0 bne 0x175bc                                   |         
                                                             | label_6:
    0x000175b4 mvn r3, 0x62                                  |         r3 = ~0x62;
    0x000175b8 b 0x173a0                                     |         goto label_4;
                                                             |     }
    0x000175bc ldr r2, [r4, 0x9c]                            |     r2 = *((r4 + 0x9c));
    0x000175c0 ldr r3, [r8, 0xc]                             |     r3 = *((r8 + 0xc));
    0x000175c4 cmp r2, 4                                     |     
    0x000175c8 str r2, [r8, 0x18]                            |     *((r8 + 0x18)) = r2;
    0x000175cc str r3, [sp]                                  |     *(sp) = r3;
                                                             |     if (r2 <= 4) {
    0x000175d0 ble 0x1762c                                   |         goto label_19;
                                                             |     }
    0x000175d4 ldr r3, [pc, 0x280]                           |     r3 = *(0x17858);
    0x000175d8 ldr r2, [pc, 0x280]                           |     r2 = *(0x1785c);
    0x000175dc add r3, pc, r3                                |     r3 = pc + r3;
    0x000175e0 add r2, pc, r2                                |     r2 = pc + r2;
                                                             |     do {
    0x000175e4 mov r1, 0xb                                   |         r1 = 0xb;
    0x000175e8 bl 0x3638                                     |         r0 = snprintf (r0, r1, r2, r3)
    0x000175ec cmp r0, 0xa                                   |         
                                                             |         if (r0 <= 0xa) {
    0x000175f0 ble 0x17640                                   |             goto label_20;
                                                             |         }
    0x000175f4 ldr r2, [pc, 0x268]                           |         r2 = *(0x17860);
    0x000175f8 mvn r3, 1                                     |         r3 = ~1;
    0x000175fc str r3, [sp, 0x18]                            |         var_18h = r3;
    0x00017600 add r2, pc, r2                                |         r2 = pc + r2;
    0x00017604 mov r3, r0                                    |         r3 = r0;
    0x00017608 mov r1, 0                                     |         r1 = 0;
    0x0001760c mov r0, 5                                     |         r0 = 5;
    0x00017610 bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
                                                             | label_5:
    0x00017614 ldr r0, [pc, 0x24c]                           |         r0 = *(0x17864);
    0x00017618 ldr r1, [pc, 0x24c]                           |         r1 = *(0x17868);
    0x0001761c mov r2, sb                                    |         r2 = sb;
    0x00017620 add r0, pc, r0                                |         r0 = pc + r0;
                                                             | label_7:
    0x00017624 bl 0x1e960                                    |         fcn_0001e960 (r0, r1);
    0x00017628 b 0x173e8                                     |         goto label_3;
                                                             | label_19:
    0x0001762c ldr r3, [pc, 0x23c]                           |         r3 = *(0x1786c);
    0x00017630 ldr r2, [pc, 0x23c]                           |         r2 = *(0x17870);
    0x00017634 add r3, pc, r3                                |         r3 = pc + r3;
    0x00017638 add r2, pc, r2                                |         r2 = pc + r2;
    0x0001763c b 0x175e4                                     |         
                                                             |     } while (1);
                                                             | label_20:
    0x00017640 ldrb r3, [r8]                                 |     r3 = *(r8);
    0x00017644 mov r1, 1                                     |     r1 = 1;
    0x00017648 lsr r2, r3, 1                                 |     r2 = r3 >> 1;
    0x0001764c and r2, r2, 3                                 |     r2 &= 3;
    0x00017650 and r3, r3, r1                                |     r3 &= r1;
    0x00017654 str r1, [sp]                                  |     *(sp) = r1;
    0x00017658 mov r0, r8                                    |     r0 = r8;
    0x0001765c add r1, sp, 0x2c                              |     r1 += var_2ch;
    0x00017660 bl 0xed10                                     |     fcn_0000ed10 (r0, r1, r2);
    0x00017664 ldr r3, [r4, 0x84]                            |     r3 = *((r4 + 0x84));
    0x00017668 mov r1, sb                                    |     r1 = sb;
    0x0001766c ldr r3, [r3, 0x20]                            |     r3 = *((r3 + 0x20));
    0x00017670 add r5, r5, 1                                 |     r5++;
    0x00017674 str r0, [sp, 0x2c]                            |     var_2ch = r0;
    0x00017678 ldr r0, [r4, 0x80]                            |     r0 = *((r4 + 0x80));
    0x0001767c blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00017680 mov r1, 0                                     |     r1 = 0;
    0x00017684 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00017688 ldreq r3, [sp, 0x2c]                          |         r3 = var_2ch;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x0001768c moveq r2, 7                                   |         r2 = 7;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00017690 strbeq r2, [r3, 0x2c]                         |         *((r3 + 0x2c)) = r2;
                                                             |     }
    0x00017694 ldr sl, [sp, 0x2c]                            |     sl = var_2ch;
    0x00017698 mov r2, 8                                     |     r2 = 8;
    0x0001769c add r0, sl, 0x24                              |     r0 = sl + 0x24;
    0x000176a0 bl 0x38a8                                     |     memset (r0, r1, r2);
    0x000176a4 ldr r2, [sl, 0x30]                            |     r2 = *((sl + 0x30));
    0x000176a8 mov r1, sl                                    |     r1 = sl;
    0x000176ac ldr r0, [r4, 0x74]                            |     r0 = *((r4 + 0x74));
    0x000176b0 bl 0x169dc                                    |     fcn_000169dc (r0, r1);
    0x000176b4 mov r3, 0                                     |     r3 = 0;
    0x000176b8 str r3, [r8, 4]                               |     *((r8 + 4)) = r3;
    0x000176bc mov r0, r8                                    |     r0 = r8;
    0x000176c0 bl 0x11c8c                                    |     fcn_00011c8c (r0);
    0x000176c4 b 0x17614                                     |     goto label_5;
                                                             | label_18:
    0x000176c8 ldr r1, [pc, 0x1a8]                           |     r1 = *(0x17874);
    0x000176cc mov r2, 3                                     |     r2 = 3;
    0x000176d0 add r1, pc, r1                                |     r1 = pc + r1;
    0x000176d4 mov r0, sb                                    |     r0 = sb;
    0x000176d8 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x000176dc cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000176e0 bne 0x173e8                                   |         goto label_3;
                                                             |     }
    0x000176e4 ldr r0, [pc, 0x190]                           |     r0 = *(0x17878);
    0x000176e8 mov r2, 0xb                                   |     r2 = 0xb;
    0x000176ec ldr r1, [pc, 0x18c]                           |     r1 = *(0x1787c);
    0x000176f0 add r0, pc, r0                                |     r0 = pc + r0;
    0x000176f4 bl 0x1e7a4                                    |     r0 = fcn_0001e7a4 (r0, r1);
    0x000176f8 subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb == r0) {
    0x000176fc beq 0x175b4                                   |         goto label_6;
                                                             |     }
    0x00017700 ldr r2, [r4, 0x9c]                            |     r2 = *((r4 + 0x9c));
    0x00017704 ldr r3, [r8, 4]                               |     r3 = *((r8 + 4));
    0x00017708 cmp r2, 4                                     |     
    0x0001770c str r2, [r8, 0xc]                             |     *((r8 + 0xc)) = r2;
    0x00017710 str r3, [sp]                                  |     *(sp) = r3;
                                                             |     if (r2 <= 4) {
    0x00017714 ble 0x17784                                   |         goto label_21;
                                                             |     }
    0x00017718 ldr r3, [pc, 0x164]                           |     r3 = *(0x17880);
    0x0001771c ldr r2, [pc, 0x164]                           |     r2 = *(0x17884);
    0x00017720 add r3, pc, r3                                |     r3 = pc + r3;
    0x00017724 add r2, pc, r2                                |     r2 = pc + r2;
                                                             |     do {
    0x00017728 mov r1, 0xb                                   |         r1 = 0xb;
    0x0001772c bl 0x3638                                     |         r0 = snprintf (r0, r1, r2, r3)
    0x00017730 cmp r0, 0xa                                   |         
                                                             |         if (r0 <= 0xa) {
    0x00017734 ble 0x17794                                   |             goto label_22;
                                                             |         }
    0x00017738 ldr r2, [pc, 0x14c]                           |         r2 = *(0x17888);
    0x0001773c mvn r3, 1                                     |         r3 = ~1;
    0x00017740 str r3, [sp, 0x18]                            |         var_18h = r3;
    0x00017744 add r2, pc, r2                                |         r2 = pc + r2;
    0x00017748 mov r3, r0                                    |         r3 = r0;
    0x0001774c mov r1, 0                                     |         r1 = 0;
    0x00017750 mov r0, 5                                     |         r0 = 5;
    0x00017754 bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
                                                             | label_8:
    0x00017758 ldr r3, [pc, 0x130]                           |         r3 = *(0x1788c);
    0x0001775c mov r2, r8                                    |         r2 = r8;
    0x00017760 add r3, pc, r3                                |         r3 = pc + r3;
    0x00017764 ldr r1, [pc, 0x128]                           |         r1 = *(0x17890);
    0x00017768 mov r8, r3                                    |         r8 = r3;
    0x0001776c mov r0, r3                                    |         r0 = r3;
    0x00017770 bl 0x1e960                                    |         fcn_0001e960 (r0, r1);
    0x00017774 mov r2, sb                                    |         r2 = sb;
    0x00017778 ldr r1, [pc, 0x118]                           |         r1 = *(0x17894);
    0x0001777c mov r0, r8                                    |         r0 = r8;
    0x00017780 b 0x17624                                     |         goto label_7;
                                                             | label_21:
    0x00017784 ldr r2, [pc, 0x110]                           |         r2 = *(0x17898);
    0x00017788 mov r3, sl                                    |         r3 = sl;
    0x0001778c add r2, pc, r2                                |         r2 = pc + r2;
    0x00017790 b 0x17728                                     |         
                                                             |     } while (1);
                                                             | label_22:
    0x00017794 ldr r3, [r4, 0x84]                            |     r3 = *((r4 + 0x84));
    0x00017798 mov r1, sb                                    |     r1 = sb;
    0x0001779c ldr r3, [r3, 0x20]                            |     r3 = *((r3 + 0x20));
    0x000177a0 ldr r0, [r4, 0x80]                            |     r0 = *((r4 + 0x80));
    0x000177a4 blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000177a8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000177ac beq 0x17758                                   |         goto label_8;
                                                             |     }
    0x000177b0 ldr r3, [r4, 0x84]                            |     r3 = *((r4 + 0x84));
    0x000177b4 ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x000177b8 ldr r3, [r3, 0x14]                            |     r3 = *((r3 + 0x14));
    0x000177bc ldr r1, [r2, fp]                              |     r1 = *((r2 + fp));
    0x000177c0 ldr r0, [r4, 0x80]                            |     r0 = *((r4 + 0x80));
    0x000177c4 blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000177c8 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x000177cc b 0x17758                                     |     goto label_8;
                                                             | label_16:
    0x000177d0 ldr r3, [r4, 0x84]                            |     r3 = *((r4 + 0x84));
    0x000177d4 ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x000177d8 ldr r3, [r3, 0x14]                            |     r3 = *((r3 + 0x14));
    0x000177dc ldr r1, [r2, fp]                              |     r1 = *((r2 + fp));
    0x000177e0 ldr r0, [r4, 0x80]                            |     r0 = *((r4 + 0x80));
    0x000177e4 blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000177e8 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x000177ec b 0x173e8                                     |     goto label_3;
                                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x17934 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00017934 ()              | void fcn_00017934 (int32_t arg1, int32_t arg2) {
                                         |     int32_t var_0h;
                                         |     int32_t var_8h;
                                         |     char * s;
                                         |     int32_t var_18h;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x00017934 push {r4, r5, r6, lr}     |     
    0x00017938 mov r4, r0                |     r4 = r0;
    0x0001793c ldr r0, [pc, 0xf4]        |     
    0x00017940 sub sp, sp, 0x18          |     
    0x00017944 add r0, pc, r0            |     r0 = pc + r0;
    0x00017948 mov r3, 0                 |     r3 = 0;
    0x0001794c mov r6, r1                |     r6 = r1;
    0x00017950 mov r2, 3                 |     r2 = 3;
    0x00017954 ldr r1, [pc, 0xe0]        |     r1 = *(0x17a38);
    0x00017958 add r0, r0, 0x104         |     r0 = 0x17b38;
    0x0001795c str r3, [sp, 8]           |     var_8h = r3;
    0x00017960 bl 0x1e0d4                |     fcn_0001e0d4 (r0, r1);
    0x00017964 ldr r3, [r4, 0x9c]        |     r3 = *((r4 + 0x9c));
    0x00017968 add r5, sp, 0xc           |     r5 += s;
    0x0001796c cmp r3, 4                 |     
    0x00017970 ldr r3, [r6, 0xc]         |     r3 = *((r6 + 0xc));
    0x00017974 str r3, [sp]              |     *(sp) = r3;
                                         |     if (r3 <= 4) {
    0x00017978 ble 0x179e8               |         goto label_1;
                                         |     }
    0x0001797c ldr r3, [pc, 0xbc]        |     r3 = *(0x17a3c);
    0x00017980 ldr r2, [pc, 0xbc]        |     r2 = *(0x17a40);
    0x00017984 add r3, pc, r3            |     r3 = pc + r3;
    0x00017988 add r2, pc, r2            |     r2 = pc + r2;
                                         |     do {
    0x0001798c mov r1, 0xb               |         r1 = 0xb;
    0x00017990 mov r0, r5                |         r0 = r5;
    0x00017994 bl 0x3638                 |         r0 = snprintf (r0, r1, r2, r3)
    0x00017998 cmp r0, 0xa               |         
                                         |         if (r0 <= 0xa) {
    0x0001799c ble 0x179fc               |             goto label_2;
                                         |         }
    0x000179a0 ldr r2, [pc, 0xa0]        |         r2 = *(0x17a44);
    0x000179a4 mov r3, r0                |         r3 = r0;
    0x000179a8 add r2, pc, r2            |         r2 = pc + r2;
    0x000179ac mov r1, 0                 |         r1 = 0;
    0x000179b0 mov r0, 5                 |         r0 = 5;
    0x000179b4 bl 0x16364                |         fcn_00016364 (r0, r1, r2, r3);
    0x000179b8 mvn r3, 1                 |         r3 = ~1;
    0x000179bc str r3, [sp, 8]           |         var_8h = r3;
                                         | label_0:
    0x000179c0 ldr r0, [pc, 0x84]        |         
    0x000179c4 mov r3, 3                 |         r3 = 3;
    0x000179c8 add r0, pc, r0            |         r0 = pc + r0;
    0x000179cc add r2, sp, 8             |         r2 += var_8h;
    0x000179d0 ldr r1, [pc, 0x78]        |         r1 = *(0x17a4c);
    0x000179d4 add r0, r0, 0x104         |         r0 = 0x17b4c;
    0x000179d8 bl 0x1e1bc                |         fcn_0001e1bc (r0, r1);
    0x000179dc ldr r0, [sp, 8]           |         r0 = var_8h;
    0x000179e0 add sp, sp, 0x18          |         
    0x000179e4 pop {r4, r5, r6, pc}      |         
                                         | label_1:
    0x000179e8 ldr r3, [pc, 0x64]        |         r3 = *(0x17a50);
    0x000179ec ldr r2, [pc, 0x64]        |         r2 = *(0x17a54);
    0x000179f0 add r3, pc, r3            |         r3 = pc + r3;
    0x000179f4 add r2, pc, r2            |         r2 = pc + r2;
    0x000179f8 b 0x1798c                 |         
                                         |     } while (1);
                                         | label_2:
    0x000179fc ldr r3, [r4, 0x84]        |     r3 = *((r4 + 0x84));
    0x00017a00 mov r1, r5                |     r1 = r5;
    0x00017a04 ldr r3, [r3, 0x14]        |     r3 = *((r3 + 0x14));
    0x00017a08 ldr r0, [r4, 0x80]        |     r0 = *((r4 + 0x80));
    0x00017a0c blx r3                    |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00017a10 cmp r0, 0                 |     
    0x00017a14 mov r3, r0                |     r3 = r0;
    0x00017a18 str r0, [sp, 8]           |     var_8h = r0;
                                         |     if (r0 == 0) {
    0x00017a1c beq 0x179c0               |         goto label_0;
                                         |     }
    0x00017a20 ldr r2, [pc, 0x34]        |     r2 = *(0x17a58);
    0x00017a24 mov r1, 0                 |     r1 = 0;
    0x00017a28 add r2, pc, r2            |     r2 = pc + r2;
    0x00017a2c mov r0, 5                 |     r0 = 5;
    0x00017a30 bl 0x16364                |     fcn_00016364 (r0, r1, r2, r3);
    0x00017a34 b 0x179c0                 |     goto label_0;
                                         | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x17a60 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00017a60 ()                          | void fcn_00017a60 (int32_t arg1, int32_t arg2) {
                                                     |     int32_t var_0h;
                                                     |     int32_t var_ch;
                                                     |     int32_t var_10h;
                                                     |     char * var_14h;
                                                     |     void * s;
                                                     |     int32_t var_30h;
                                                     |     int32_t var_34h;
                                                     |     int32_t var_38h;
                                                     |     int32_t var_3ch;
                                                     |     int32_t var_40h;
                                                     |     int32_t var_44h;
                                                     |     int32_t var_48h;
                                                     |     int32_t var_4ch;
                                                     |     int32_t var_50h;
                                                     |     int32_t var_54h;
                                                     |     int32_t var_58h;
                                                     |     int32_t var_5ch;
                                                     |     int32_t var_60h;
                                                     |     int32_t var_64h;
                                                     |     int32_t var_68h;
                                                     |     int32_t var_6ch;
                                                     |     int32_t var_70h;
                                                     |     int32_t var_74h;
                                                     |     int32_t var_78h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00017a60 push {r4, r5, r6, r7, r8, lr}         |     
    0x00017a64 mov r5, r0                            |     r5 = r0;
    0x00017a68 ldr r0, [pc, 0x25c]                   |     
    0x00017a6c sub sp, sp, 0x78                      |     
    0x00017a70 add r0, pc, r0                        |     r0 = pc + r0;
    0x00017a74 mov r7, r1                            |     r7 = r1;
    0x00017a78 mov r2, 3                             |     r2 = 3;
    0x00017a7c mov r4, 0                             |     r4 = 0;
    0x00017a80 mov r1, 0x2b0                         |     r1 = 0x2b0;
    0x00017a84 add r0, r0, 0x128                     |     r0 = 0x17df0;
    0x00017a88 str r4, [sp, 0xc]                     |     var_ch = r4;
    0x00017a8c bl 0x1e0d4                            |     fcn_0001e0d4 (r0, r1);
    0x00017a90 ldr r6, [r7]                          |     r6 = *(r7);
    0x00017a94 ldr r0, [r7, 4]                       |     r0 = *((r7 + 4));
    0x00017a98 add r3, r6, 8                         |     r3 = r6 + 8;
    0x00017a9c str r3, [sp, 0x54]                    |     var_54h = r3;
    0x00017aa0 ldr r3, [r6, 0xc]                     |     r3 = *((r6 + 0xc));
    0x00017aa4 mov r8, 4                             |     r8 = 4;
    0x00017aa8 str r3, [sp, 0x58]                    |     var_58h = r3;
    0x00017aac ldr r3, [r6, 8]                       |     r3 = *((r6 + 8));
    0x00017ab0 str r8, [sp, 0x30]                    |     var_30h = r8;
    0x00017ab4 str r3, [sp, 0x34]                    |     var_34h = r3;
    0x00017ab8 add r3, r6, 0x10                      |     r3 = r6 + 0x10;
    0x00017abc str r3, [sp, 0x5c]                    |     var_5ch = r3;
    0x00017ac0 add r3, r6, 0x14                      |     r3 = r6 + 0x14;
    0x00017ac4 str r3, [sp, 0x60]                    |     var_60h = r3;
    0x00017ac8 add r3, r6, 0x18                      |     r3 = r6 + 0x18;
    0x00017acc str r3, [sp, 0x64]                    |     var_64h = r3;
    0x00017ad0 add r3, r6, 0x1c                      |     r3 = r6 + 0x1c;
    0x00017ad4 str r3, [sp, 0x68]                    |     var_68h = r3;
    0x00017ad8 str r8, [sp, 0x38]                    |     var_38h = r8;
    0x00017adc str r8, [sp, 0x3c]                    |     var_3ch = r8;
    0x00017ae0 str r8, [sp, 0x40]                    |     var_40h = r8;
    0x00017ae4 str r8, [sp, 0x44]                    |     var_44h = r8;
    0x00017ae8 str r0, [sp, 0x6c]                    |     var_6ch = r0;
    0x00017aec bl 0x3608                             |     strlen (r0);
    0x00017af0 add r3, r7, 8                         |     r3 = r7 + 8;
    0x00017af4 str r3, [sp, 0x70]                    |     var_70h = r3;
    0x00017af8 ldr r3, [r5, 0x7c]                    |     r3 = *((r5 + 0x7c));
    0x00017afc ldr r2, [pc, 0x1cc]                   |     r2 = *(0x17ccc);
    0x00017b00 add r3, r3, 1                         |     r3++;
    0x00017b04 cmp r3, r2                            |     
    0x00017b08 ldr r2, [r5, 0x9c]                    |     r2 = *((r5 + 0x9c));
                                                     |     if (r3 != r2) {
    0x00017b0c moveq r3, r4                          |         r3 = r4;
                                                     |     }
    0x00017b10 cmp r2, r8                            |     
    0x00017b14 str r8, [sp, 0x4c]                    |     var_4ch = r8;
    0x00017b18 str r3, [r5, 0x7c]                    |     *((r5 + 0x7c)) = r3;
    0x00017b1c add r0, r0, 1                         |     r0++;
    0x00017b20 str r0, [sp, 0x48]                    |     var_48h = r0;
                                                     |     if (r2 <= r8) {
    0x00017b24 ble 0x17ca4                           |         goto label_0;
                                                     |     }
    0x00017b28 add r3, sp, 0x20                      |     r3 += s;
    0x00017b2c mov r1, r4                            |     r1 = r4;
    0x00017b30 mov r0, r3                            |     r0 = r3;
    0x00017b34 mov r2, 0x10                          |     r2 = 0x10;
    0x00017b38 bl 0x38a8                             |     memset (r0, r1, r2);
    0x00017b3c ldr r2, [r6, 4]                       |     r2 = *((r6 + 4));
    0x00017b40 str r4, [sp, 0x10]                    |     var_10h = r4;
    0x00017b44 cmp r2, r4                            |     
                                                     |     if (r2 <= r4) {
    0x00017b48 addgt r6, r6, 0x20                    |         r6 += 0x20;
                                                     |     }
                                                     |     if (r2 > r4) {
    0x00017b4c movle r6, r0                          |         r6 = r0;
                                                     |     }
    0x00017b50 mov r0, r6                            |     r0 = r6;
    0x00017b54 bl 0x1b370                            |     fcn_0001b370 (r0);
    0x00017b58 ldr r1, [pc, 0x174]                   |     r1 = *(0x17cd0);
    0x00017b5c mov r2, r0                            |     r2 = r0;
    0x00017b60 mov r4, r0                            |     r4 = r0;
    0x00017b64 ldr r0, [pc, 0x16c]                   |     r0 = *(0x17cd4);
    0x00017b68 add r0, pc, r0                        |     r0 = pc + r0;
    0x00017b6c bl 0x1e7a4                            |     r0 = fcn_0001e7a4 (r0, r1);
    0x00017b70 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00017b74 mvneq r3, 0x62                        |         r3 = ~0x62;
                                                     |     }
    0x00017b78 str r0, [sp, 0x74]                    |     var_74h = r0;
    0x00017b7c str r0, [sp, 0x10]                    |     var_10h = r0;
                                                     |     if (r0 != 0) {
    0x00017b80 streq r3, [sp, 0xc]                   |         var_ch = r3;
                                                     |     }
                                                     |     if (r0 == 0) {
    0x00017b84 beq 0x17c7c                           |         goto label_1;
                                                     |     }
    0x00017b88 mov r1, r6                            |     r1 = r6;
    0x00017b8c add r0, sp, 0x10                      |     r0 += var_10h;
    0x00017b90 bl 0x1b620                            |     fcn_0001b620 (r0, r1);
    0x00017b94 ldr r3, [r5, 0x7c]                    |     r3 = *((r5 + 0x7c));
    0x00017b98 ldr r2, [pc, 0x13c]                   |     r2 = *(0x17cd8);
    0x00017b9c str r3, [sp]                          |     *(sp) = r3;
    0x00017ba0 ldr r3, [pc, 0x138]                   |     r3 = *(0x17cdc);
    0x00017ba4 add r2, pc, r2                        |     r2 = pc + r2;
    0x00017ba8 add r3, pc, r3                        |     r3 = pc + r3;
    0x00017bac mov r1, 0xb                           |     r1 = 0xb;
    0x00017bb0 str r4, [sp, 0x50]                    |     var_50h = r4;
    0x00017bb4 mov r6, 9                             |     r6 = 9;
    0x00017bb8 mov r4, 8                             |     r4 = 8;
    0x00017bbc str r0, [sp, 0xc]                     |     var_ch = r0;
    0x00017bc0 add r0, sp, 0x14                      |     r0 += var_14h;
    0x00017bc4 bl 0x3638                             |     r0 = snprintf (r0, r1, r2, r3)
                                                     |     do {
    0x00017bc8 cmp r0, 0xa                           |         
                                                     |         if (r0 <= 0xa) {
    0x00017bcc mvngt r3, 1                           |             r3 = ~1;
                                                     |         }
                                                     |         if (r0 <= 0xa) {
    0x00017bd0 strgt r3, [sp, 0xc]                   |             var_ch = r3;
                                                     |         }
                                                     |         if (r0 <= 0xa) {
    0x00017bd4 bgt 0x17c58                           |             
    0x00017bd8 ldr r3, [r5, 0x7c]                    |             r3 = *((r5 + 0x7c));
    0x00017bdc str r3, [r7, 0xc]                     |             *((r7 + 0xc)) = r3;
    0x00017be0 ldr r7, [r5, 0x88]                    |             r7 = *((r5 + 0x88));
    0x00017be4 cmp r7, 0                             |             
                                                     |             if (r7 != 0) {
    0x00017be8 beq 0x17c04                           |                 
    0x00017bec add r3, sp, 0x30                      |                 r3 += var_30h;
    0x00017bf0 add r2, sp, 0x54                      |                 r2 += var_54h;
    0x00017bf4 mov r1, r6                            |                 r1 = r6;
    0x00017bf8 ldr r0, [r5, 0x90]                    |                 r0 = *((r5 + 0x90));
    0x00017bfc blx r7                                |                 uint32_t (*r7)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00017c00 str r0, [sp, 0xc]                     |                 var_ch = r0;
                                                     |             }
    0x00017c04 ldr r7, [sp, 0xc]                     |             r7 = var_ch;
    0x00017c08 cmp r7, 0                             |             
                                                     |             if (r7 != 0) {
    0x00017c0c bne 0x17c58                           |                 goto label_2;
                                                     |             }
    0x00017c10 ldr r3, [r5, 0x84]                    |             r3 = *((r5 + 0x84));
    0x00017c14 add r2, sp, 0x30                      |             r2 += var_30h;
    0x00017c18 str r2, [sp]                          |             *(sp) = r2;
    0x00017c1c add r1, sp, 0x14                      |             r1 += var_14h;
    0x00017c20 ldr r8, [r3, 0xc]                     |             r8 = *((r3 + 0xc));
    0x00017c24 mov r2, r6                            |             r2 = r6;
    0x00017c28 add r3, sp, 0x54                      |             r3 += var_54h;
    0x00017c2c ldr r0, [r5, 0x80]                    |             r0 = *((r5 + 0x80));
    0x00017c30 blx r8                                |             r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00017c34 cmp r0, 0                             |             
    0x00017c38 mov r3, r0                            |             r3 = r0;
    0x00017c3c str r0, [sp, 0xc]                     |             var_ch = r0;
                                                     |             if (r0 == 0) {
    0x00017c40 beq 0x17c58                           |                 goto label_2;
                                                     |             }
    0x00017c44 ldr r2, [pc, 0x98]                    |             r2 = *(0x17ce0);
    0x00017c48 mov r1, r7                            |             r1 = r7;
    0x00017c4c add r2, pc, r2                        |             r2 = pc + r2;
    0x00017c50 mov r0, 5                             |             r0 = 5;
    0x00017c54 bl 0x16364                            |             fcn_00016364 (r0, r1, r2, r3);
                                                     |         }
                                                     | label_2:
    0x00017c58 cmp r4, 0                             |         
                                                     |         if (r4 != 0) {
    0x00017c5c beq 0x17c7c                           |             
    0x00017c60 ldr r0, [pc, 0x80]                    |             r0 = *(0x17ce4);
    0x00017c64 add r3, sp, 0x78                      |             r3 += var_78h;
    0x00017c68 add r4, r3, r4, lsl 2                 |             r4 = r3 + (r4 << 2);
    0x00017c6c ldr r2, [r4, -0x24]                   |             r2 = var_54h;
    0x00017c70 ldr r1, [pc, 0x74]                    |             r1 = *(0x17ce8);
    0x00017c74 add r0, pc, r0                        |             r0 = pc + r0;
    0x00017c78 bl 0x1e960                            |             fcn_0001e960 (r0, r1);
                                                     |         }
                                                     | label_1:
    0x00017c7c ldr r0, [pc, 0x6c]                    |         
    0x00017c80 mov r3, 3                             |         r3 = 3;
    0x00017c84 add r0, pc, r0                        |         r0 = pc + r0;
    0x00017c88 add r2, sp, 0xc                       |         r2 += var_ch;
    0x00017c8c ldr r1, [pc, 0x60]                    |         r1 = *(0x17cf0);
    0x00017c90 add r0, r0, 0x128                     |         r0 = 0x17e14;
    0x00017c94 bl 0x1e1bc                            |         fcn_0001e1bc (r0, r1);
    0x00017c98 ldr r0, [sp, 0xc]                     |         r0 = var_ch;
    0x00017c9c add sp, sp, 0x78                      |         
    0x00017ca0 pop {r4, r5, r6, r7, r8, pc}          |         
                                                     | label_0:
    0x00017ca4 str r3, [sp]                          |         *(sp) = r3;
    0x00017ca8 ldr r2, [pc, 0x48]                    |         r2 = *(0x17cf4);
    0x00017cac ldr r3, [pc, 0x48]                    |         r3 = *(0x17cf8);
    0x00017cb0 add r2, pc, r2                        |         r2 = pc + r2;
    0x00017cb4 add r3, pc, r3                        |         r3 = pc + r3;
    0x00017cb8 mov r1, 0xb                           |         r1 = 0xb;
    0x00017cbc add r0, sp, 0x14                      |         r0 += var_14h;
    0x00017cc0 bl 0x3638                             |         snprintf (r0, r1, r2, r3)
    0x00017cc4 mov r6, 8                             |         r6 = 8;
    0x00017cc8 b 0x17bc8                             |         
                                                     |     } while (1);
                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x19814 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00019814 ()                  | void fcn_00019814 (int32_t arg1, int32_t arg2) {
                                             |     int32_t var_0h;
                                             |     int32_t var_4h;
                                             |     int32_t var_ch;
                                             |     int32_t var_14h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x00019814 push {r4, r5, r6, r7, lr}     |     
    0x00019818 mov r5, r0                    |     r5 = r0;
    0x0001981c ldr r0, [pc, 0x104]           |     
    0x00019820 mov r3, 0                     |     r3 = 0;
    0x00019824 add r0, pc, r0                |     r0 = pc + r0;
    0x00019828 sub sp, sp, 0x14              |     
    0x0001982c mov r7, r1                    |     r7 = r1;
    0x00019830 mov r2, 3                     |     r2 = 3;
    0x00019834 ldr r1, [pc, 0xf0]            |     r1 = *(0x19928);
    0x00019838 add r0, r0, 0x18              |     r0 = 0x1993c;
    0x0001983c str r3, [sp, 0xc]             |     var_ch = r3;
    0x00019840 bl 0x1e0d4                    |     fcn_0001e0d4 (r0, r1);
    0x00019844 cmp r5, 0                     |     
                                             |     if (r5 != 0) {
    0x00019848 mvneq r3, 1                   |         r3 = ~1;
                                             |     }
                                             |     if (r5 != 0) {
    0x0001984c beq 0x1988c                   |         
    0x00019850 mov r0, r5                    |         r0 = r5;
    0x00019854 bl 0x3608                     |         r0 = strlen (r0);
    0x00019858 mov r4, r0                    |         r4 = r0;
    0x0001985c mov r0, r7                    |         r0 = r7;
    0x00019860 bl 0x3608                     |         strlen (r0);
    0x00019864 ldr r1, [pc, 0xc4]            |         r1 = *(0x1992c);
    0x00019868 add r4, r4, r0                |         r4 += r0;
    0x0001986c ldr r0, [pc, 0xc0]            |         r0 = *(0x19930);
    0x00019870 add r4, r4, 6                 |         r4 += 6;
    0x00019874 mov r2, r4                    |         r2 = r4;
    0x00019878 add r0, pc, r0                |         r0 = pc + r0;
    0x0001987c bl 0x1e7a4                    |         r0 = fcn_0001e7a4 (r0, r1);
    0x00019880 subs r6, r0, 0                |         r6 = r0 - 0;
                                             |         if (r6 != r0) {
    0x00019884 bne 0x198b8                   |             goto label_2;
                                             |         }
    0x00019888 mvn r3, 0x62                  |         r3 = ~0x62;
                                             |     }
    0x0001988c str r3, [sp, 0xc]             |     var_ch = r3;
                                             |     do {
    0x00019890 ldr r0, [pc, 0xa0]            |         
    0x00019894 mov r3, 3                     |         r3 = 3;
    0x00019898 add r0, pc, r0                |         r0 = pc + r0;
    0x0001989c add r2, sp, 0xc               |         r2 += var_ch;
    0x000198a0 ldr r1, [pc, 0x94]            |         r1 = *(0x19938);
    0x000198a4 add r0, r0, 0x18              |         r0 = 0x1994c;
    0x000198a8 bl 0x1e1bc                    |         fcn_0001e1bc (r0, r1);
    0x000198ac ldr r0, [sp, 0xc]             |         r0 = var_ch;
    0x000198b0 add sp, sp, 0x14              |         
    0x000198b4 pop {r4, r5, r6, r7, pc}      |         
                                             | label_2:
    0x000198b8 ldr r3, [pc, 0x80]            |         r3 = *(0x1993c);
    0x000198bc ldr r2, [pc, 0x80]            |         r2 = *(0x19940);
    0x000198c0 add r3, pc, r3                |         r3 = pc + r3;
    0x000198c4 str r3, [sp, 4]               |         var_4h = r3;
    0x000198c8 str r7, [sp]                  |         *(sp) = r7;
    0x000198cc mov r3, r5                    |         r3 = r5;
    0x000198d0 add r2, pc, r2                |         r2 = pc + r2;
    0x000198d4 mov r1, r4                    |         r1 = r4;
    0x000198d8 bl 0x3638                     |         r0 = snprintf (r0, r1, r2, r3)
    0x000198dc cmp r0, r4                    |         
                                             |         if (r0 <= r4) {
    0x000198e0 blo 0x19904                   |             goto label_3;
                                             |         }
                                             | label_1:
    0x000198e4 mvn r3, 1                     |         r3 = ~1;
    0x000198e8 str r3, [sp, 0xc]             |         var_ch = r3;
                                             | label_0:
    0x000198ec ldr r0, [pc, 0x54]            |         r0 = *(0x19944);
    0x000198f0 mov r2, r6                    |         r2 = r6;
    0x000198f4 ldr r1, [pc, 0x50]            |         r1 = *(0x19948);
    0x000198f8 add r0, pc, r0                |         r0 = pc + r0;
    0x000198fc bl 0x1e960                    |         fcn_0001e960 (r0, r1);
    0x00019900 b 0x19890                     |         
                                             |     } while (1);
                                             | label_3:
    0x00019904 mov r0, r6                    |     r0 = r6;
    0x00019908 bl 0x3890                     |     r0 = unlink (r0);
    0x0001990c cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00019910 beq 0x198ec                   |         goto label_0;
                                             |     }
    0x00019914 bl 0x3428                     |     r0 = errno_location ();
    0x00019918 ldr r3, [r0]                  |     r3 = *(r0);
    0x0001991c cmp r3, 2                     |     
                                             |     if (r3 != 2) {
    0x00019920 bne 0x198e4                   |         goto label_1;
                                             |     }
    0x00019924 b 0x198ec                     |     goto label_0;
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x19b88 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00019b88 ()                                      | void fcn_00019b88 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_7ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00019b88 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x00019b8c mov r7, r0                                        |     r7 = r0;
    0x00019b90 ldr r0, [pc, 0x19c]                               |     
    0x00019b94 sub sp, sp, 0x7c                                  |     
    0x00019b98 add r0, pc, r0                                    |     r0 = pc + r0;
    0x00019b9c mvn r3, 1                                         |     r3 = ~1;
    0x00019ba0 mov r2, 3                                         |     r2 = 3;
    0x00019ba4 add r0, r0, 0x32                                  |     r0 = 0x19d62;
    0x00019ba8 mov sl, r1                                        |     sl = r1;
    0x00019bac mov r1, 0x1ec                                     |     r1 = 0x1ec;
    0x00019bb0 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00019bb4 bl 0x1e0d4                                        |     fcn_0001e0d4 (r0, r1);
    0x00019bb8 mov r0, r7                                        |     r0 = r7;
    0x00019bbc bl 0x3620                                         |     r0 = opendir ();
    0x00019bc0 subs sb, r0, 0                                    |     sb = r0 - 0;
                                                                 |     if (sb == r0) {
    0x00019bc4 beq 0x19c3c                                       |         goto label_3;
                                                                 |     }
    0x00019bc8 ldr r6, [pc, 0x168]                               |     r6 = *(0x19d34);
    0x00019bcc add r6, pc, r6                                    |     r6 = pc + r6;
                                                                 | label_2:
    0x00019bd0 ldr fp, [pc, 0x164]                               |     fp = *(0x00019d3c);
    0x00019bd4 add fp, pc, fp                                    |     
                                                                 | label_0:
    0x00019bd8 mov r0, sb                                        |     r0 = sb;
    0x00019bdc bl 0x3bb4                                         |     r0 = readdir64 ();
    0x00019be0 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 == r0) {
    0x00019be4 beq 0x19c34                                       |         goto label_4;
                                                                 |     }
    0x00019be8 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00019bec cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00019bf0 beq 0x19c34                                       |         goto label_4;
                                                                 |     }
    0x00019bf4 mov r0, r7                                        |     r0 = r7;
    0x00019bf8 bl 0x3608                                         |     strlen (r0);
    0x00019bfc add r5, r5, 0x13                                  |     r5 += 0x13;
    0x00019c00 mov r4, r0                                        |     r4 = r0;
    0x00019c04 mov r0, r5                                        |     r0 = r5;
    0x00019c08 bl 0x3608                                         |     strlen (r0);
    0x00019c0c ldr r1, [pc, 0x12c]                               |     r1 = *(0x19d3c);
    0x00019c10 add r4, r4, r0                                    |     r4 += r0;
    0x00019c14 add r4, r4, 2                                     |     r4 += 2;
    0x00019c18 mov r2, r4                                        |     r2 = r4;
    0x00019c1c mov r0, r6                                        |     r0 = r6;
    0x00019c20 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x00019c24 subs r8, r0, 0                                    |     r8 = r0 - 0;
                                                                 |     if (r8 != r0) {
    0x00019c28 bne 0x19c64                                       |         goto label_5;
                                                                 |     }
                                                                 | label_1:
    0x00019c2c mvn r3, 0x62                                      |     r3 = ~0x62;
                                                                 |     do {
    0x00019c30 str r3, [sp, 0xc]                                 |         var_ch = r3;
                                                                 | label_4:
    0x00019c34 mov r0, sb                                        |         r0 = sb;
    0x00019c38 bl 0x3794                                         |         closedir ();
                                                                 | label_3:
    0x00019c3c ldr r0, [pc, 0x100]                               |         
    0x00019c40 mov r3, 3                                         |         r3 = 3;
    0x00019c44 add r0, pc, r0                                    |         r0 = pc + r0;
    0x00019c48 add r2, sp, 0xc                                   |         r2 += var_ch;
    0x00019c4c ldr r1, [pc, 0xf4]                                |         r1 = *(0x19d44);
    0x00019c50 add r0, r0, 0x32                                  |         r0 = 0x19d72;
    0x00019c54 bl 0x1e1bc                                        |         fcn_0001e1bc (r0, r1);
    0x00019c58 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x00019c5c add sp, sp, 0x7c                                  |         
    0x00019c60 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_5:
    0x00019c64 str r5, [sp]                                      |         *(sp) = r5;
    0x00019c68 mov r3, r7                                        |         r3 = r7;
    0x00019c6c mov r2, fp                                        |         r2 = fp;
    0x00019c70 mov r1, r4                                        |         r1 = r4;
    0x00019c74 bl 0x3638                                         |         r0 = snprintf (r0, r1, r2, r3)
    0x00019c78 cmp r0, r4                                        |         
                                                                 |         if (r0 <= r4) {
    0x00019c7c blo 0x19c98                                       |             goto label_6;
                                                                 |         }
    0x00019c80 mov r2, r8                                        |         r2 = r8;
    0x00019c84 ldr r1, [pc, 0xc0]                                |         r1 = *(0x19d48);
    0x00019c88 mov r0, r6                                        |         r0 = r6;
    0x00019c8c bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
    0x00019c90 mvn r3, 1                                         |         r3 = ~1;
    0x00019c94 b 0x19c30                                         |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x00019c98 add r1, sp, 0x10                                  |     r1 += var_10h;
    0x00019c9c mov r0, r8                                        |     r0 = r8;
    0x00019ca0 bl 0x3710                                         |     lstat64 ();
    0x00019ca4 mov r2, r8                                        |     r2 = r8;
    0x00019ca8 mov r1, 0x200                                     |     r1 = 0x200;
    0x00019cac mov r0, r6                                        |     r0 = r6;
    0x00019cb0 bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
    0x00019cb4 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00019cb8 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00019cbc cmp r3, 0x8000                                    |     
                                                                 |     if (r3 != 0x8000) {
    0x00019cc0 bne 0x19bd8                                       |         goto label_0;
                                                                 |     }
    0x00019cc4 mov r0, r5                                        |     r0 = r5;
    0x00019cc8 bl 0x3608                                         |     strlen (r0);
    0x00019ccc ldr r1, [pc, 0x7c]                                |     r1 = *(0x19d4c);
    0x00019cd0 add r2, r0, 1                                     |     r2 = r0 + 1;
    0x00019cd4 mov r0, r6                                        |     r0 = r6;
    0x00019cd8 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x00019cdc subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 == r0) {
    0x00019ce0 beq 0x19c2c                                       |         goto label_1;
                                                                 |     }
    0x00019ce4 mov r1, r5                                        |     r1 = r5;
    0x00019ce8 bl 0x3bd8                                         |     strcpy (r0, r1);
    0x00019cec ldr r1, [pc, 0x60]                                |     r1 = *(0x19d50);
    0x00019cf0 mov r0, r4                                        |     r0 = r4;
    0x00019cf4 add r1, pc, r1                                    |     r1 = pc + r1;
    0x00019cf8 bl 0x3aa0                                         |     strstr (r0, r1);
    0x00019cfc mov r1, sl                                        |     r1 = sl;
    0x00019d00 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00019d04 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00019d08 strbne r3, [r0]                                   |         *(r0) = r3;
                                                                 |     }
    0x00019d0c mov r0, r4                                        |     r0 = r4;
    0x00019d10 bl 0x3aac                                         |     strcmp (r0, r1);
    0x00019d14 mov r2, r4                                        |     r2 = r4;
    0x00019d18 ldr r1, [pc, 0x38]                                |     r1 = *(0x19d54);
    0x00019d1c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00019d20 streq r0, [sp, 0xc]                               |         var_ch = r0;
                                                                 |     }
    0x00019d24 ldr r0, [pc, 0x30]                                |     r0 = *(0x19d58);
    0x00019d28 add r0, pc, r0                                    |     r0 = pc + r0;
    0x00019d2c bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
    0x00019d30 b 0x19bd0                                         |     goto label_2;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x19f4c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00019f4c ()                                      | void fcn_00019f4c (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_8ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00019f4c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x00019f50 mov sl, r0                                        |     sl = r0;
    0x00019f54 ldr r0, [pc, 0x314]                               |     
    0x00019f58 sub sp, sp, 0x8c                                  |     
    0x00019f5c add r0, pc, r0                                    |     r0 = pc + r0;
    0x00019f60 str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00019f64 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00019f68 ldr r1, [pc, 0x304]                               |     r1 = *(0x1a270);
    0x00019f6c mov r2, 3                                         |     r2 = 3;
    0x00019f70 add r0, r0, 0x64                                  |     r0 = 0x1a2d0;
    0x00019f74 mov r4, 0                                         |     r4 = 0;
    0x00019f78 str r4, [sp, 0x1c]                                |     var_1ch = r4;
    0x00019f7c bl 0x1e0d4                                        |     fcn_0001e0d4 (r0, r1);
    0x00019f80 mov r0, sl                                        |     r0 = sl;
    0x00019f84 bl 0x3620                                         |     r0 = opendir ();
    0x00019f88 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 != r0) {
    0x00019f8c bne 0x1a0cc                                       |         goto label_10;
                                                                 |     }
                                                                 | label_4:
    0x00019f90 mvn r3, 1                                         |     r3 = ~1;
                                                                 | label_2:
    0x00019f94 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 |     do {
                                                                 | label_8:
    0x00019f98 ldr r0, [pc, 0x2d8]                               |         
    0x00019f9c mov r3, 3                                         |         r3 = 3;
    0x00019fa0 add r0, pc, r0                                    |         r0 = pc + r0;
    0x00019fa4 add r2, sp, 0x1c                                  |         r2 += var_1ch;
    0x00019fa8 mov r1, 0x370                                     |         r1 = 0x370;
    0x00019fac add r0, r0, 0x64                                  |         r0 = 0x1a2d8;
    0x00019fb0 bl 0x1e1bc                                        |         fcn_0001e1bc (r0, r1);
    0x00019fb4 ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x00019fb8 add sp, sp, 0x8c                                  |         
    0x00019fbc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_1:
    0x00019fc0 mov r0, sl                                        |         r0 = sl;
    0x00019fc4 bl 0x3608                                         |         strlen (r0);
    0x00019fc8 add r3, r7, 0x13                                  |         r3 = r7 + 0x13;
    0x00019fcc str r3, [sp, 8]                                   |         var_8h = r3;
    0x00019fd0 mov r6, r0                                        |         r6 = r0;
    0x00019fd4 mov r0, r3                                        |         r0 = r3;
    0x00019fd8 bl 0x3608                                         |         strlen (r0);
    0x00019fdc mov r1, sb                                        |         r1 = sb;
    0x00019fe0 add r6, r6, r0                                    |         r6 += r0;
    0x00019fe4 add r6, r6, 2                                     |         r6 += 2;
    0x00019fe8 mov r2, r6                                        |         r2 = r6;
    0x00019fec mov r0, r8                                        |         r0 = r8;
    0x00019ff0 bl 0x1e7a4                                        |         fcn_0001e7a4 (r0, r1);
    0x00019ff4 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x00019ff8 subs r7, r0, 0                                    |         r7 = r0 - 0;
                                                                 |         if (r7 != r0) {
    0x00019ffc bne 0x1a014                                       |             goto label_11;
                                                                 |         }
                                                                 | label_5:
    0x0001a000 mvn r3, 0x62                                      |         r3 = ~0x62;
                                                                 | label_0:
    0x0001a004 str r3, [sp, 0x1c]                                |         var_1ch = r3;
                                                                 | label_9:
    0x0001a008 mov r0, r5                                        |         r0 = r5;
    0x0001a00c bl 0x3794                                         |         closedir ();
    0x0001a010 b 0x19f98                                         |         
                                                                 |     } while (1);
                                                                 | label_11:
    0x0001a014 str r3, [sp]                                      |     *(sp) = r3;
    0x0001a018 mov r2, fp                                        |     r2 = fp;
    0x0001a01c mov r3, sl                                        |     r3 = sl;
    0x0001a020 mov r1, r6                                        |     r1 = r6;
    0x0001a024 bl 0x3638                                         |     r0 = snprintf (r0, r1, r2, r3)
    0x0001a028 cmp r0, r6                                        |     
                                                                 |     if (r0 > r6) {
    0x0001a02c blo 0x1a048                                       |         
    0x0001a030 ldr r1, [pc, 0x244]                               |         r1 = *(0x1a278);
    0x0001a034 mov r2, r7                                        |         r2 = r7;
    0x0001a038 mov r0, r8                                        |         r0 = r8;
                                                                 | label_6:
    0x0001a03c bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
    0x0001a040 mvn r3, 1                                         |         r3 = ~1;
    0x0001a044 b 0x1a004                                         |         goto label_0;
                                                                 |     }
    0x0001a048 add r1, sp, 0x20                                  |     r1 += var_20h;
    0x0001a04c mov r0, r7                                        |     r0 = r7;
    0x0001a050 bl 0x3710                                         |     r0 = lstat64 ();
    0x0001a054 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001a058 bne 0x1a06c                                       |         
    0x0001a05c ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x0001a060 and r3, r3, 0xf000                                |         r3 &= 0xf000;
    0x0001a064 cmp r3, 0x8000                                    |         
                                                                 |         if (r3 == 0x8000) {
    0x0001a068 addeq r4, r4, 1                                   |             r4++;
                                                                 |             goto label_12;
                                                                 |         }
                                                                 |     }
                                                                 | label_12:
    0x0001a06c ldr r0, [pc, 0x20c]                               |     r0 = *(0x1a27c);
    0x0001a070 mov r2, r7                                        |     r2 = r7;
    0x0001a074 ldr r1, [pc, 0x208]                               |     r1 = *(0x1a280);
    0x0001a078 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001a07c bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
                                                                 | label_3:
    0x0001a080 mov r0, r5                                        |     r0 = r5;
    0x0001a084 bl 0x3bb4                                         |     r0 = readdir64 ();
    0x0001a088 subs r7, r0, 0                                    |     r7 = r0 - 0;
                                                                 |     if (r7 != r0) {
    0x0001a08c bne 0x19fc0                                       |         goto label_1;
                                                                 |     }
    0x0001a090 mov r0, r5                                        |     r0 = r5;
    0x0001a094 bl 0x3794                                         |     closedir ();
    0x0001a098 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0001a09c moveq r5, r4                                      |         r5 = r4;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x0001a0a0 moveq r6, r4                                      |         r6 = r4;
                                                                 |     }
                                                                 |     if (r4 == 0) {
    0x0001a0a4 beq 0x1a254                                       |         goto label_13;
                                                                 |     }
    0x0001a0a8 ldr r0, [pc, 0x1d8]                               |     r0 = *(0x1a284);
    0x0001a0ac lsl r2, r4, 2                                     |     r2 = r4 << 2;
    0x0001a0b0 ldr r1, [pc, 0x1d4]                               |     r1 = *(0x1a288);
    0x0001a0b4 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001a0b8 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x0001a0bc subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 == r0) {
    0x0001a0c0 bne 0x1a0e4                                       |         
    0x0001a0c4 mvn r3, 0x62                                      |         r3 = ~0x62;
    0x0001a0c8 b 0x19f94                                         |         goto label_2;
                                                                 | label_10:
    0x0001a0cc ldr r8, [pc, 0x1bc]                               |         r8 = *(0x1a28c);
    0x0001a0d0 ldr fp, [pc, 0x1bc]                               |         fp = *(0x0001a294);
    0x0001a0d4 add r8, pc, r8                                    |         r8 = pc + r8;
    0x0001a0d8 ldr sb, [pc, 0x1b8]                               |         sb = *(0x0001a298);
    0x0001a0dc add fp, pc, fp                                    |         
    0x0001a0e0 b 0x1a080                                         |         goto label_3;
                                                                 |     }
    0x0001a0e4 mov r0, sl                                        |     r0 = sl;
    0x0001a0e8 bl 0x3620                                         |     r0 = opendir ();
    0x0001a0ec subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 == r0) {
    0x0001a0f0 beq 0x19f90                                       |         goto label_4;
                                                                 |     }
    0x0001a0f4 ldr r3, [pc, 0x1a0]                               |     r3 = *(0x1a298);
    0x0001a0f8 str r7, [sp, 8]                                   |     var_8h = r7;
    0x0001a0fc ldr r7, [pc, 0x19c]                               |     r7 = *(0x1a29c);
    0x0001a100 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001a104 add r7, pc, r7                                    |     r7 = pc + r7;
    0x0001a108 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001a10c b 0x1a244                                         |     goto label_14;
                                                                 | label_7:
    0x0001a110 mov r0, sl                                        |     r0 = sl;
    0x0001a114 bl 0x3608                                         |     strlen (r0);
    0x0001a118 add sb, sb, 0x13                                  |     sb += 0x13;
    0x0001a11c mov r8, r0                                        |     r8 = r0;
    0x0001a120 mov r0, sb                                        |     r0 = sb;
    0x0001a124 bl 0x3608                                         |     strlen (r0);
    0x0001a128 ldr r1, [pc, 0x174]                               |     r1 = *(0x1a2a0);
    0x0001a12c add r8, r8, r0                                    |     r8 += r0;
    0x0001a130 add r8, r8, 2                                     |     r8 += 2;
    0x0001a134 mov r2, r8                                        |     r2 = r8;
    0x0001a138 mov r0, r7                                        |     r0 = r7;
    0x0001a13c bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x0001a140 subs fp, r0, 0                                    |     
                                                                 |     if (fp != r0) {
    0x0001a144 bne 0x1a15c                                       |         goto label_15;
                                                                 |     }
    0x0001a148 ldr r1, [pc, 0x158]                               |     r1 = *(0x1a2a4);
    0x0001a14c mov r2, r6                                        |     r2 = r6;
                                                                 |     do {
    0x0001a150 mov r0, r7                                        |         r0 = r7;
    0x0001a154 bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
    0x0001a158 b 0x1a000                                         |         goto label_5;
                                                                 | label_15:
    0x0001a15c str sb, [sp]                                      |         *(sp) = sb;
    0x0001a160 mov r3, sl                                        |         r3 = sl;
    0x0001a164 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x0001a168 mov r1, r8                                        |         r1 = r8;
    0x0001a16c bl 0x3638                                         |         r0 = snprintf (r0, r1, r2, r3)
    0x0001a170 cmp r0, r8                                        |         
                                                                 |         if (r0 > r8) {
    0x0001a174 blo 0x1a198                                       |             
    0x0001a178 mov r2, fp                                        |             r2 = fp;
    0x0001a17c mov r1, 0x34c                                     |             r1 = 0x34c;
    0x0001a180 mov r0, r7                                        |             r0 = r7;
    0x0001a184 bl 0x1e960                                        |             fcn_0001e960 (r0, r1);
    0x0001a188 mov r2, r6                                        |             r2 = r6;
    0x0001a18c ldr r1, [pc, 0x118]                               |             r1 = *(0x1a2a8);
    0x0001a190 mov r0, r7                                        |             r0 = r7;
    0x0001a194 b 0x1a03c                                         |             goto label_6;
                                                                 |         }
    0x0001a198 add r1, sp, 0x20                                  |         r1 += var_20h;
    0x0001a19c mov r0, fp                                        |         r0 = fp;
    0x0001a1a0 bl 0x3710                                         |         r0 = lstat64 ();
    0x0001a1a4 subs r8, r0, 0                                    |         r8 = r0 - 0;
                                                                 |         if (r8 != r0) {
    0x0001a1a8 bne 0x1a230                                       |             goto label_16;
                                                                 |         }
    0x0001a1ac ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x0001a1b0 and r3, r3, 0xf000                                |         r3 &= 0xf000;
    0x0001a1b4 cmp r3, 0x8000                                    |         
                                                                 |         if (r3 != 0x8000) {
    0x0001a1b8 bne 0x1a230                                       |             goto label_16;
                                                                 |         }
    0x0001a1bc mov r0, sb                                        |         r0 = sb;
    0x0001a1c0 bl 0x3608                                         |         strlen (r0);
    0x0001a1c4 ldr r1, [pc, 0xe4]                                |         r1 = *(0x1a2ac);
    0x0001a1c8 add r2, r0, 1                                     |         r2 = r0 + 1;
    0x0001a1cc mov r0, r7                                        |         r0 = r7;
    0x0001a1d0 bl 0x1e7a4                                        |         fcn_0001e7a4 (r0, r1);
    0x0001a1d4 ldr r2, [sp, 8]                                   |         r2 = var_8h;
    0x0001a1d8 cmp r0, 0                                         |         
    0x0001a1dc str r0, [r6, r2, lsl 2]                           |         offset_0 = r2 << 2;
                                                                 |         *((r6 + offset_0)) = r0;
                                                                 |         if (r0 != 0) {
    0x0001a1e0 bne 0x1a200                                       |             goto label_17;
                                                                 |         }
    0x0001a1e4 mov r2, fp                                        |         r2 = fp;
    0x0001a1e8 ldr r1, [pc, 0xc4]                                |         r1 = *(0x1a2b0);
    0x0001a1ec mov r0, r7                                        |         r0 = r7;
    0x0001a1f0 bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
    0x0001a1f4 mov r2, r6                                        |         r2 = r6;
    0x0001a1f8 ldr r1, [pc, 0xb8]                                |         r1 = *(0x1a2b4);
    0x0001a1fc b 0x1a150                                         |         
                                                                 |     } while (1);
                                                                 | label_17:
    0x0001a200 mov r1, sb                                        |     r1 = sb;
    0x0001a204 bl 0x3bd8                                         |     strcpy (r0, r1);
    0x0001a208 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0001a20c ldr r1, [pc, 0xa8]                                |     r1 = *(0x1a2b8);
    0x0001a210 ldr r0, [r6, r3, lsl 2]                           |     offset_1 = r3 << 2;
                                                                 |     r0 = *((r6 + offset_1));
    0x0001a214 add r1, pc, r1                                    |     r1 = pc + r1;
    0x0001a218 bl 0x3aa0                                         |     strstr (r0, r1);
    0x0001a21c ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0001a220 add r3, r3, 1                                     |     r3++;
    0x0001a224 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0001a228 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001a22c strbne r8, [r0]                                   |         *(r0) = r8;
                                                                 |     }
                                                                 | label_16:
    0x0001a230 ldr r0, [pc, 0x88]                                |     r0 = *(0x1a2bc);
    0x0001a234 mov r2, fp                                        |     r2 = fp;
    0x0001a238 mov r1, 0x360                                     |     r1 = 0x360;
    0x0001a23c add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001a240 bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
                                                                 | label_14:
    0x0001a244 mov r0, r5                                        |     r0 = r5;
    0x0001a248 bl 0x3bb4                                         |     r0 = readdir64 ();
    0x0001a24c subs sb, r0, 0                                    |     sb = r0 - 0;
                                                                 |     if (sb != r0) {
    0x0001a250 bne 0x1a110                                       |         goto label_7;
                                                                 |     }
                                                                 | label_13:
    0x0001a254 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0001a258 cmp r5, 0                                         |     
    0x0001a25c str r4, [r3]                                      |     *(r3) = r4;
    0x0001a260 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0001a264 str r6, [r3]                                      |     *(r3) = r6;
                                                                 |     if (r5 == 0) {
    0x0001a268 beq 0x19f98                                       |         goto label_8;
                                                                 |     }
    0x0001a26c b 0x1a008                                         |     goto label_9;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x1c650 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001c650 ()                                      | void fcn_0001c650 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_2ch;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_34h;
                                                                 |     int32_t var_38h;
                                                                 |     int32_t var_3ch;
                                                                 |     int32_t var_40h;
                                                                 |     int32_t var_44h;
                                                                 |     size_t size;
                                                                 |     int32_t var_0h_4;
                                                                 |     int32_t var_0h_3;
                                                                 |     int32_t var_4h_2;
                                                                 |     void * s;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_68h;
                                                                 |     int32_t var_6ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0001c650 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001c654 ldr r4, [r0, 0x3c]                                |     r4 = *((r0 + 0x3c));
    0x0001c658 mov r5, r0                                        |     r5 = r0;
    0x0001c65c ldr r0, [pc, 0x364]                               |     
    0x0001c660 sub sp, sp, 0x6c                                  |     
    0x0001c664 mov r3, 0x50                                      |     r3 = 0x50;
    0x0001c668 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001c66c str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0001c670 mov r2, 3                                         |     r2 = 3;
    0x0001c674 mov r3, 0                                         |     r3 = 0;
    0x0001c678 mov sb, r1                                        |     sb = r1;
    0x0001c67c add r0, r0, 0x30                                  |     r0 = 0x1c9f4;
    0x0001c680 ldr r1, [pc, 0x344]                               |     r1 = *(0x1c9c8);
    0x0001c684 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x0001c688 bl 0x1e0d4                                        |     fcn_0001e0d4 (r0, r1);
    0x0001c68c ldr r2, [r5, 0x38]                                |     r2 = *((r5 + 0x38));
    0x0001c690 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0001c694 bne 0x1c6ec                                       |         goto label_5;
                                                                 |     }
    0x0001c698 ldr r0, [pc, 0x330]                               |     r0 = *(0x1c9cc);
    0x0001c69c mov r2, 0x19                                      |     r2 = 0x19;
    0x0001c6a0 ldr r1, [pc, 0x32c]                               |     r1 = *(0x1c9d0);
    0x0001c6a4 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001c6a8 bl 0x1e7a4                                        |     fcn_0001e7a4 (r0, r1);
                                                                 |     do {
    0x0001c6ac str r0, [r5, 0x38]                                |         *((r5 + 0x38)) = r0;
    0x0001c6b0 ldr r3, [r5, 0x38]                                |         r3 = *((r5 + 0x38));
    0x0001c6b4 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0001c6b8 bne 0x1c704                                       |             goto label_6;
                                                                 |         }
                                                                 | label_0:
    0x0001c6bc mvn r3, 0x62                                      |         r3 = ~0x62;
                                                                 | label_1:
    0x0001c6c0 ldr r0, [pc, 0x310]                               |         
    0x0001c6c4 str r3, [sp, 0x38]                                |         var_38h = r3;
    0x0001c6c8 add r0, pc, r0                                    |         r0 = pc + r0;
    0x0001c6cc mov r3, 3                                         |         r3 = 3;
    0x0001c6d0 add r2, sp, 0x38                                  |         r2 += var_38h;
    0x0001c6d4 ldr r1, [pc, 0x300]                               |         r1 = *(0x1c9d8);
    0x0001c6d8 add r0, r0, 0x30                                  |         r0 = 0x1ca04;
    0x0001c6dc bl 0x1e1bc                                        |         fcn_0001e1bc (r0, r1);
    0x0001c6e0 ldr r0, [sp, 0x38]                                |         r0 = var_38h;
    0x0001c6e4 add sp, sp, 0x6c                                  |         
    0x0001c6e8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_5:
    0x0001c6ec ldr r0, [pc, 0x2ec]                               |         r0 = *(0x1c9dc);
    0x0001c6f0 mov r3, 0x19                                      |         r3 = 0x19;
    0x0001c6f4 ldr r1, [pc, 0x2e8]                               |         r1 = *(0x1c9e0);
    0x0001c6f8 add r0, pc, r0                                    |         r0 = pc + r0;
    0x0001c6fc bl 0x1ea30                                        |         fcn_0001ea30 (r0, r1);
    0x0001c700 b 0x1c6ac                                         |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x0001c704 add r6, sp, 0x44                                  |     r6 += var_44h;
    0x0001c708 mov r0, r6                                        |     r0 = r6;
    0x0001c70c bl 0x1c220                                        |     fcn_0001c220 (r0);
    0x0001c710 mov r3, 0x10                                      |     r3 = 0x10;
    0x0001c714 mov r2, r6                                        |     r2 = r6;
    0x0001c718 mov r1, 0x19                                      |     r1 = 0x19;
    0x0001c71c ldr r0, [r5, 0x38]                                |     r0 = *((r5 + 0x38));
    0x0001c720 bl 0x1bea4                                        |     fcn_0001bea4 ();
    0x0001c724 mov r3, 0x50                                      |     r3 = 0x50;
    0x0001c728 add r2, sp, 0x40                                  |     r2 += var_40h;
    0x0001c72c add r1, sp, 0x3c                                  |     r1 += var_3ch;
    0x0001c730 mov r0, sb                                        |     r0 = sb;
    0x0001c734 bl 0x18824                                        |     fcn_00018824 (r0, r1);
    0x0001c738 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0001c73c cmp r3, 0                                         |     
    0x0001c740 mov sl, r0                                        |     sl = r0;
                                                                 |     if (r3 != 0) {
    0x0001c744 ldreq r3, [pc, 0x29c]                             |         r3 = *(0x0001c9e8);
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0001c748 addeq r3, pc, r3                                  |         r3 = pc + r3;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0001c74c streq r3, [sp, 0x40]                              |         var_40h = r3;
                                                                 |     }
    0x0001c750 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0001c754 addne r4, r4, 8                                   |         r4 += 8;
                                                                 |     }
                                                                 |     if (r4 == 0) {
    0x0001c758 movne r6, 0                                       |         r6 = 0;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x0001c75c bne 0x1c8e4                                       |         goto label_7;
                                                                 |     }
                                                                 | label_2:
    0x0001c760 ldr r3, [pc, 0x284]                               |     r3 = *(0x1c9e8);
    0x0001c764 cmp r4, 0                                         |     
    0x0001c768 add r3, pc, r3                                    |     r3 = pc + r3;
                                                                 |     if (r4 == 0) {
    0x0001c76c movne r3, r4                                      |         r3 = r4;
                                                                 |     }
    0x0001c770 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0001c774 ldr r3, [pc, 0x274]                               |     r3 = *(0x1c9ec);
    0x0001c778 ldr fp, [pc, 0x274]                               |     fp = *(0x1c9f0);
    0x0001c77c add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001c780 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0001c784 ldr r3, [pc, 0x26c]                               |     r3 = *(0x1c9f4);
    0x0001c788 mov r6, 0                                         |     r6 = 0;
    0x0001c78c add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001c790 mov r8, r6                                        |     r8 = r6;
    0x0001c794 mov r7, r6                                        |     r7 = r6;
    0x0001c798 add fp, pc, fp                                    |     
    0x0001c79c str r3, [sp, 0x30]                                |     var_30h = r3;
                                                                 | label_3:
    0x0001c7a0 ldr r2, [r5, 0x1c]                                |     r2 = *((r5 + 0x1c));
    0x0001c7a4 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0001c7a8 cmp r2, 0                                         |     
    0x0001c7ac ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0001c7b0 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x0001c7b4 str r1, [sp, 0x20]                                |     var_20h = r1;
    0x0001c7b8 ldr r1, [r5, 0x38]                                |     r1 = *((r5 + 0x38));
                                                                 |     if (r2 == 0) {
    0x0001c7bc movne r2, fp                                      |         r2 = fp;
                                                                 |     }
    0x0001c7c0 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x0001c7c4 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0001c7c8 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0001c7cc str r3, [sp, 8]                                   |     var_8h = r3;
    0x0001c7d0 mov r1, r6                                        |     r1 = r6;
    0x0001c7d4 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0001c7d8 str sb, [sp, 0x14]                                |     var_14h = sb;
    0x0001c7dc str sl, [sp, 0x10]                                |     var_10h = sl;
    0x0001c7e0 str sb, [sp, 4]                                   |     var_4h = sb;
    0x0001c7e4 str sl, [sp]                                      |     *(sp) = sl;
    0x0001c7e8 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x0001c7ec mov r0, r7                                        |     r0 = r7;
    0x0001c7f0 bl 0x3638                                         |     snprintf (r0, r1, r2, r3)
    0x0001c7f4 eor r3, r8, 1                                     |     r3 = r8 ^ 1;
    0x0001c7f8 cmp r0, 0                                         |     
                                                                 |     if (r0 > 0) {
    0x0001c7fc movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r0 <= 0) {
    0x0001c800 andgt r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x0001c804 cmp r3, 0                                         |     
    0x0001c808 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r3 == 0) {
    0x0001c80c beq 0x1c830                                       |         goto label_8;
                                                                 |     }
    0x0001c810 add r6, r0, 1                                     |     r6 = r0 + 1;
    0x0001c814 ldr r0, [pc, 0x1e0]                               |     r0 = *(0x1c9f8);
    0x0001c818 mov r2, r6                                        |     r2 = r6;
    0x0001c81c ldr r1, [pc, 0x1dc]                               |     r1 = *(0x1c9fc);
    0x0001c820 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001c824 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x0001c828 subs r7, r0, 0                                    |     r7 = r0 - 0;
                                                                 |     if (r7 == r0) {
    0x0001c82c beq 0x1c6bc                                       |         goto label_0;
                                                                 |     }
                                                                 | label_8:
    0x0001c830 cmp r8, 1                                         |     
                                                                 |     if (r8 != 1) {
    0x0001c834 bne 0x1c97c                                       |         goto label_9;
                                                                 |     }
    0x0001c838 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0001c83c beq 0x1c854                                       |         
    0x0001c840 ldr r0, [pc, 0x1bc]                               |         r0 = *(0x1ca00);
    0x0001c844 mov r2, r4                                        |         r2 = r4;
    0x0001c848 ldr r1, [pc, 0x1b8]                               |         r1 = *(0x1ca04);
    0x0001c84c add r0, pc, r0                                    |         r0 = pc + r0;
    0x0001c850 bl 0x1e960                                        |         fcn_0001e960 (r0, r1);
                                                                 |     }
    0x0001c854 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0001c858 beq 0x1c9a8                                       |         goto label_10;
                                                                 |     }
    0x0001c85c add r3, sp, 0x54                                  |     r3 += s;
    0x0001c860 mov r2, 0x14                                      |     r2 = 0x14;
    0x0001c864 mov r1, 0                                         |     r1 = 0;
    0x0001c868 mov r0, r3                                        |     r0 = r3;
    0x0001c86c bl 0x38a8                                         |     memset (r0, r1, r2);
    0x0001c870 ldr r8, [r5, 0x1c]                                |     r8 = *((r5 + 0x1c));
    0x0001c874 ldr r4, [r5]                                      |     r4 = *(r5);
    0x0001c878 cmp r8, 0                                         |     
                                                                 |     if (r8 == 0) {
    0x0001c87c beq 0x1c984                                       |         goto label_11;
                                                                 |     }
    0x0001c880 mov ip, r0                                        |     
    0x0001c884 ldm ip!, {r0, r1, r2, r3}                         |     r0 = *(ip!);
                                                                 |     r1 = *((ip! + 4));
                                                                 |     r2 = *((ip! + 8));
                                                                 |     r3 = *((ip! + 12));
    0x0001c888 mov lr, sp                                        |     lr = sp;
    0x0001c88c stm lr!, {r0, r1, r2, r3}                         |     *(lr!) = r0;
                                                                 |     *((lr! + 4)) = r1;
                                                                 |     *((lr! + 8)) = r2;
                                                                 |     *((lr! + 12)) = r3;
    0x0001c890 ldr r3, [ip]                                      |     r3 = *(ip);
    0x0001c894 mov r2, r7                                        |     r2 = r7;
    0x0001c898 str r3, [lr]                                      |     *(lr) = r3;
    0x0001c89c mov r1, r4                                        |     r1 = r4;
    0x0001c8a0 mov r3, r6                                        |     r3 = r6;
    0x0001c8a4 mov r0, r8                                        |     r0 = r8;
    0x0001c8a8 bl 0xe1d8                                         |     fcn_0000e1d8 (r0, r1, r2, r3, r4, r5);
                                                                 | label_4:
    0x0001c8ac ldr r0, [pc, 0x158]                               |     r0 = *(0x1ca08);
    0x0001c8b0 mov r2, r7                                        |     r2 = r7;
    0x0001c8b4 ldr r1, [pc, 0x154]                               |     r1 = *(0x1ca0c);
    0x0001c8b8 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001c8bc bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
    0x0001c8c0 mov r3, 1                                         |     r3 = 1;
    0x0001c8c4 b 0x1c6c0                                         |     goto label_1;
                                                                 |     do {
    0x0001c8c8 bl 0x3608                                         |         strlen (r0);
    0x0001c8cc add r6, r6, 4                                     |         r6 += var_4h_2;
    0x0001c8d0 mov r8, r0                                        |         r8 = r0;
    0x0001c8d4 mov r0, r7                                        |         r0 = r7;
    0x0001c8d8 bl 0x3608                                         |         strlen (r0);
    0x0001c8dc add r6, r6, r8                                    |         r6 += r8;
    0x0001c8e0 add r6, r6, r0                                    |         r6 += r0;
                                                                 | label_7:
    0x0001c8e4 ldr r0, [r4, -8]                                  |         r0 = *((r4 - 8));
    0x0001c8e8 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0001c8ec beq 0x1c900                                       |             goto label_12;
                                                                 |         }
    0x0001c8f0 add r4, r4, 8                                     |         r4 += 8;
    0x0001c8f4 ldr r7, [r4, -0xc]                                |         r7 = *((r4 - 0xc));
    0x0001c8f8 cmp r7, 0                                         |         
    0x0001c8fc bne 0x1c8c8                                       |         
                                                                 |     } while (r7 != 0);
                                                                 | label_12:
    0x0001c900 ldr r0, [pc, 0x10c]                               |     r0 = *(0x1ca10);
    0x0001c904 add r6, r6, 1                                     |     r6 += size;
    0x0001c908 mov r2, r6                                        |     r2 = r6;
    0x0001c90c ldr r1, [pc, 0x104]                               |     r1 = *(0x1ca14);
    0x0001c910 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001c914 bl 0x1e7a4                                        |     r0 = fcn_0001e7a4 (r0, r1);
    0x0001c918 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 == r0) {
    0x0001c91c beq 0x1c6bc                                       |         goto label_0;
                                                                 |     }
    0x0001c920 ldr r7, [r5, 0x3c]                                |     r7 = *((r5 + 0x3c));
    0x0001c924 ldr fp, [pc, 0xf0]                                |     fp = *(0x1ca18);
    0x0001c928 add r7, r7, 8                                     |     r7 += 8;
    0x0001c92c mov r8, r4                                        |     r8 = r4;
    0x0001c930 add fp, pc, fp                                    |     
                                                                 |     do {
    0x0001c934 ldr r3, [r7, -8]                                  |         r3 = *((r7 - 8));
    0x0001c938 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0001c93c beq 0x1c950                                       |             
    0x0001c940 add r7, r7, 8                                     |             r7 += 8;
    0x0001c944 ldr r2, [r7, -0xc]                                |             r2 = *((r7 - 0xc));
    0x0001c948 cmp r2, 0                                         |             
                                                                 |             if (r2 != 0) {
    0x0001c94c bne 0x1c95c                                       |                 goto label_13;
                                                                 |             }
                                                                 |         }
    0x0001c950 mov r3, 0                                         |         r3 = 0;
    0x0001c954 strb r3, [r8]                                     |         *(r8) = r3;
    0x0001c958 b 0x1c760                                         |         goto label_2;
                                                                 | label_13:
    0x0001c95c sub r1, r8, r4                                    |         r1 = r8 - r4;
    0x0001c960 str r2, [sp]                                      |         *(sp) = r2;
    0x0001c964 mov r0, r8                                        |         r0 = r8;
    0x0001c968 mov r2, fp                                        |         r2 = fp;
    0x0001c96c sub r1, r6, r1                                    |         r1 = r6 - r1;
    0x0001c970 bl 0x3638                                         |         r0 = snprintf (r0, r1, r2, r3)
    0x0001c974 add r8, r8, r0                                    |         r8 += r0;
    0x0001c978 b 0x1c934                                         |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x0001c97c mov r8, 1                                         |     r8 = 1;
    0x0001c980 b 0x1c7a0                                         |     goto label_3;
                                                                 | label_11:
    0x0001c984 add r3, sp, 0x68                                  |     r3 += var_68h;
    0x0001c988 ldmdb r3, {r0, r1, r2, r3}                        |     __asm ("ldmdb r3, {r0, r1, r2, r3}");
    0x0001c98c stm sp, {r0, r1, r2, r3}                          |     *(sp) = r0;
                                                                 |     *((sp + 4)) = r1;
                                                                 |     *((sp + 8)) = r2;
                                                                 |     *((sp + 12)) = r3;
    0x0001c990 ldr r3, [sp, 0x54]                                |     r3 = s;
    0x0001c994 mov r2, r6                                        |     r2 = r6;
    0x0001c998 mov r1, r7                                        |     r1 = r7;
    0x0001c99c mov r0, r4                                        |     r0 = r4;
    0x0001c9a0 bl 0x146d8                                        |     fcn_000146d8 (r0, r1, r2, r3, r4);
    0x0001c9a4 b 0x1c8ac                                         |     goto label_4;
                                                                 | label_10:
    0x0001c9a8 ldr r0, [pc, 0x70]                                |     r0 = *(0x1ca1c);
    0x0001c9ac ldr r2, [r5, 0x38]                                |     r2 = *((r5 + 0x38));
    0x0001c9b0 mov r1, 0x1fc                                     |     r1 = 0x1fc;
    0x0001c9b4 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001c9b8 bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
    0x0001c9bc str r7, [r5, 0x38]                                |     *((r5 + 0x38)) = r7;
    0x0001c9c0 mvn r3, 0                                         |     r3 = ~0;
    0x0001c9c4 b 0x1c6c0                                         |     goto label_1;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x1d91c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0001d91c ()                                  | void fcn_0001d91c (int32_t arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     char * s2;
                                                             |     int32_t var_68h;
                                                             |     int32_t var_c8h;
                                                             |     r0 = arg1;
    0x0001d91c push {r4, r5, r6, r7, r8, sb, sl, lr}         |     
    0x0001d920 ldr r1, [pc, 0x368]                           |     r1 = *(0x1dc8c);
    0x0001d924 mov r5, r0                                    |     r5 = r0;
    0x0001d928 ldr r0, [pc, 0x364]                           |     
    0x0001d92c sub sp, sp, 0xc8                              |     
    0x0001d930 add r0, pc, r0                                |     r0 = pc + r0;
    0x0001d934 mvn sb, 0                                     |     sb = ~0;
    0x0001d938 add r6, sp, 0xc8                              |     r6 += var_c8h;
    0x0001d93c mov r2, 3                                     |     r2 = 3;
    0x0001d940 add r0, r0, 0xd6                              |     r0 = 0x1dd66;
    0x0001d944 str sb, [r6, -0xbc]!                          |     *((r6 -= 0xbc)) = sb;
    0x0001d948 bl 0x1e0d4                                    |     fcn_0001e0d4 (r0, r1);
    0x0001d94c ldr r4, [r5, 0x38]                            |     r4 = *((r5 + 0x38));
    0x0001d950 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0001d954 beq 0x1da90                                   |         goto label_0;
                                                             |     }
    0x0001d958 add r7, sp, 0x28                              |     r7 += s2;
    0x0001d95c mov r2, 0x3e                                  |     r2 = 0x3e;
    0x0001d960 mov r1, 0                                     |     r1 = 0;
    0x0001d964 mov r0, r7                                    |     r0 = r7;
    0x0001d968 bl 0x38a8                                     |     memset (r0, r1, r2);
    0x0001d96c mov r3, 0                                     |     r3 = 0;
    0x0001d970 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x0001d974 ldr r3, [pc, 0x31c]                           |     r3 = *(0x1dc94);
    0x0001d978 ldr r2, [pc, 0x31c]                           |     r2 = *(0x1dc98);
    0x0001d97c add r3, pc, r3                                |     r3 = pc + r3;
    0x0001d980 add r2, pc, r2                                |     r2 = pc + r2;
    0x0001d984 mov r1, 0x3e                                  |     r1 = 0x3e;
    0x0001d988 str r3, [sp]                                  |     *(sp) = r3;
    0x0001d98c mov r0, r7                                    |     r0 = r7;
    0x0001d990 mov r3, r4                                    |     r3 = r4;
    0x0001d994 add r4, sp, 0x68                              |     r4 += var_68h;
    0x0001d998 bl 0x3638                                     |     snprintf (r0, r1, r2, r3)
    0x0001d99c mov r0, r4                                    |     r0 = r4;
    0x0001d9a0 bl 0x3884                                     |     SHA1_Init ();
    0x0001d9a4 mov r0, r7                                    |     r0 = r7;
    0x0001d9a8 bl 0x3608                                     |     strlen (r0);
    0x0001d9ac mov r1, r7                                    |     r1 = r7;
    0x0001d9b0 add r8, sp, 0x10                              |     r8 += var_10h;
    0x0001d9b4 mov r2, r0                                    |     r2 = r0;
    0x0001d9b8 mov r0, r4                                    |     r0 = r4;
    0x0001d9bc bl 0x3740                                     |     SHA1_Update ();
    0x0001d9c0 mov r1, r4                                    |     r1 = r4;
    0x0001d9c4 add r4, sp, 0x14                              |     r4 += var_14h;
    0x0001d9c8 mov r0, r4                                    |     r0 = r4;
    0x0001d9cc bl 0x3758                                     |     SHA1_Final ();
    0x0001d9d0 mov r2, r4                                    |     r2 = r4;
    0x0001d9d4 mov r3, 0x14                                  |     r3 = 0x14;
    0x0001d9d8 mov r1, 0x3e                                  |     r1 = 0x3e;
    0x0001d9dc mov r0, r7                                    |     r0 = r7;
    0x0001d9e0 bl 0x1bea4                                    |     fcn_0001bea4 ();
    0x0001d9e4 mov r3, r6                                    |     r3 = r6;
    0x0001d9e8 mov r2, r8                                    |     r2 = r8;
    0x0001d9ec mov r1, 0xc                                   |     r1 = 0xc;
    0x0001d9f0 mov r0, r5                                    |     r0 = r5;
    0x0001d9f4 bl 0x1bf44                                    |     fcn_0001bf44 (r0, r1);
    0x0001d9f8 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x0001d9fc cmp r3, sb                                    |     
    0x0001da00 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r3 == sb) {
    0x0001da04 beq 0x1da90                                   |         goto label_0;
                                                             |     }
    0x0001da08 cmp r0, 0                                     |     
    0x0001da0c ldr r3, [sp, 0x10]                            |     r3 = var_10h;
                                                             |     if (r0 != 0) {
    0x0001da10 beq 0x1da1c                                   |         
    0x0001da14 cmp r3, 0xb                                   |         
                                                             |         if (r3 > 0xb) {
    0x0001da18 bhi 0x1da3c                                   |             goto label_2;
                                                             |         }
                                                             |     }
    0x0001da1c ldr r2, [pc, 0x27c]                           |     r2 = *(0x1dc9c);
    0x0001da20 mov r1, 1                                     |     r1 = 1;
    0x0001da24 add r2, pc, r2                                |     r2 = pc + r2;
    0x0001da28 mov r0, 4                                     |     r0 = 4;
    0x0001da2c bl 0x16364                                    |     fcn_00016364 (r0, r1, r2, r3);
    0x0001da30 mvn r3, 0x15                                  |     r3 = ~0x15;
                                                             | label_1:
    0x0001da34 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x0001da38 b 0x1da90                                     |     goto label_0;
                                                             | label_2:
    0x0001da3c ldr r1, [pc, 0x260]                           |     r1 = *(0x1dca0);
    0x0001da40 mov r2, 8                                     |     r2 = 8;
    0x0001da44 add r1, pc, r1                                |     r1 = pc + r1;
    0x0001da48 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x0001da4c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0001da50 bne 0x1dab8                                   |         goto label_3;
                                                             |     }
    0x0001da54 ldr r1, [pc, 0x24c]                           |     r1 = *(0x1dca4);
    0x0001da58 add sl, r4, 9                                 |     sl = r4 + 9;
    0x0001da5c mov r2, 3                                     |     r2 = 3;
    0x0001da60 add r1, pc, r1                                |     r1 = pc + r1;
    0x0001da64 mov r0, sl                                    |     r0 = sl;
    0x0001da68 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x0001da6c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001da70 beq 0x1dab8                                   |         goto label_3;
                                                             |     }
    0x0001da74 ldr r2, [pc, 0x230]                           |     r2 = *(0x1dca8);
    0x0001da78 mov r3, sl                                    |     r3 = sl;
    0x0001da7c add r2, pc, r2                                |     r2 = pc + r2;
    0x0001da80 mov r1, 1                                     |     r1 = 1;
    0x0001da84 mov r0, 4                                     |     r0 = 4;
    0x0001da88 bl 0x16364                                    |     fcn_00016364 (r0, r1, r2, r3);
    0x0001da8c str sb, [sp, 0xc]                             |     var_ch = sb;
                                                             |     do {
                                                             | label_0:
    0x0001da90 ldr r0, [pc, 0x218]                           |         
    0x0001da94 mov r3, 3                                     |         r3 = 3;
    0x0001da98 add r0, pc, r0                                |         r0 = pc + r0;
    0x0001da9c mov r2, r6                                    |         r2 = r6;
    0x0001daa0 ldr r1, [pc, 0x20c]                           |         r1 = *(0x1dcb0);
    0x0001daa4 add r0, r0, 0xd6                              |         r0 = 0x1dd82;
    0x0001daa8 bl 0x1e1bc                                    |         fcn_0001e1bc (r0, r1);
    0x0001daac ldr r0, [sp, 0xc]                             |         r0 = var_ch;
    0x0001dab0 add sp, sp, 0xc8                              |         
    0x0001dab4 pop {r4, r5, r6, r7, r8, sb, sl, pc}          |         
                                                             | label_3:
    0x0001dab8 ldr r1, [pc, 0x1f8]                           |         r1 = *(0x1dcb4);
    0x0001dabc mov r2, 0xc                                   |         r2 = 0xc;
    0x0001dac0 add r1, pc, r1                                |         r1 = pc + r1;
    0x0001dac4 mov r0, r4                                    |         r0 = r4;
    0x0001dac8 bl 0x35a8                                     |         r0 = strncmp (r0, r1, r2);
    0x0001dacc cmp r0, 0                                     |         
    0x0001dad0 bne 0x1da90                                   |         
                                                             |     } while (r0 != 0);
    0x0001dad4 mov r3, r6                                    |     r3 = r6;
    0x0001dad8 mov r2, r8                                    |     r2 = r8;
    0x0001dadc mov r1, 0x400                                 |     r1 = 0x400;
    0x0001dae0 mov r0, r5                                    |     r0 = r5;
    0x0001dae4 bl 0x1bf44                                    |     fcn_0001bf44 (r0, r1);
    0x0001dae8 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x0001daec cmn r3, 1                                     |     
    0x0001daf0 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r3 == 1) {
    0x0001daf4 beq 0x1da90                                   |         goto label_0;
                                                             |     }
    0x0001daf8 cmp r0, 0                                     |     
    0x0001dafc ldr sb, [sp, 0x10]                            |     sb = var_10h;
                                                             |     if (r0 != 0) {
    0x0001db00 beq 0x1db4c                                   |         
    0x0001db04 cmp sb, 4                                     |         
                                                             |         if (sb < 4) {
    0x0001db08 bls 0x1db4c                                   |             goto label_4;
                                                             |         }
    0x0001db0c ldr r1, [pc, 0x1a8]                           |         r1 = *(0x1dcb8);
    0x0001db10 sub r0, sb, 4                                 |         r0 = sb - 4;
    0x0001db14 mov r2, 4                                     |         r2 = 4;
    0x0001db18 add r1, pc, r1                                |         r1 = pc + r1;
    0x0001db1c add r0, r4, r0                                |         r0 = r4 + r0;
    0x0001db20 bl 0x3950                                     |         r0 = memcmp (r0, r1, r2);
    0x0001db24 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0001db28 beq 0x1db4c                                   |             goto label_4;
                                                             |         }
    0x0001db2c ldr r2, [pc, 0x18c]                           |         r2 = *(0x1dcbc);
    0x0001db30 mov r3, sb                                    |         r3 = sb;
    0x0001db34 add r2, pc, r2                                |         r2 = pc + r2;
    0x0001db38 mvn r1, 0                                     |         r1 = ~0;
    0x0001db3c mov r0, 4                                     |         r0 = 4;
    0x0001db40 bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
    0x0001db44 mvn r3, 0                                     |         r3 = ~0;
    0x0001db48 b 0x1da34                                     |         goto label_1;
                                                             |     }
                                                             | label_4:
    0x0001db4c ldr r1, [pc, 0x170]                           |     r1 = *(0x1dcc0);
    0x0001db50 mov r2, sb                                    |     r2 = sb;
    0x0001db54 add r1, pc, r1                                |     r1 = pc + r1;
    0x0001db58 mov r0, r4                                    |     r0 = r4;
    0x0001db5c bl 0x1c1a8                                    |     r0 = fcn_0001c1a8 (r0, r1);
    0x0001db60 subs sl, r0, 0                                |     sl = r0 - 0;
                                                             |     if (sl == r0) {
    0x0001db64 beq 0x1dc14                                   |         goto label_5;
                                                             |     }
    0x0001db68 sub r2, r4, sl                                |     r2 = r4 - sl;
    0x0001db6c sub r2, sb, r2                                |     r2 = sb - r2;
    0x0001db70 mov r1, 0xa                                   |     r1 = 0xa;
    0x0001db74 bl 0x39ec                                     |     r0 = memchr (r0, r1, r2);
    0x0001db78 subs r2, r0, 0                                |     r2 = r0 - 0;
                                                             |     if (r2 == r0) {
    0x0001db7c beq 0x1dc14                                   |         goto label_5;
                                                             |     }
    0x0001db80 ldr r1, [pc, 0x140]                           |     r1 = *(0x1dcc4);
    0x0001db84 sub r2, r2, sl                                |     r2 -= sl;
    0x0001db88 add r1, pc, r1                                |     r1 = pc + r1;
    0x0001db8c mov r0, sl                                    |     r0 = sl;
    0x0001db90 bl 0x1c1a8                                    |     r0 = fcn_0001c1a8 (r0, r1);
    0x0001db94 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001db98 beq 0x1dc14                                   |         goto label_5;
                                                             |     }
    0x0001db9c ldr r1, [pc, 0x128]                           |     r1 = *(0x1dcc8);
    0x0001dba0 mov r2, sb                                    |     r2 = sb;
    0x0001dba4 add r1, pc, r1                                |     r1 = pc + r1;
    0x0001dba8 mov r0, r4                                    |     r0 = r4;
    0x0001dbac bl 0x1c1a8                                    |     r0 = fcn_0001c1a8 (r0, r1);
    0x0001dbb0 subs sl, r0, 0                                |     sl = r0 - 0;
                                                             |     if (sl == r0) {
    0x0001dbb4 beq 0x1dc14                                   |         goto label_5;
                                                             |     }
    0x0001dbb8 sub r2, r4, sl                                |     r2 = r4 - sl;
    0x0001dbbc sub r2, sb, r2                                |     r2 = sb - r2;
    0x0001dbc0 mov r1, 0xa                                   |     r1 = 0xa;
    0x0001dbc4 bl 0x39ec                                     |     r0 = memchr (r0, r1, r2);
    0x0001dbc8 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 == r0) {
    0x0001dbcc beq 0x1dc14                                   |         goto label_5;
                                                             |     }
    0x0001dbd0 sub r2, r4, sl                                |     r2 = r4 - sl;
    0x0001dbd4 mov r1, 0x3a                                  |     r1 = 0x3a;
    0x0001dbd8 mov r0, sl                                    |     r0 = sl;
    0x0001dbdc bl 0x39ec                                     |     r0 = memchr (r0, r1, r2);
    0x0001dbe0 subs r3, r0, 0                                |     r3 = r0 - 0;
                                                             |     if (r3 == r0) {
    0x0001dbe4 beq 0x1dc14                                   |         goto label_5;
                                                             |     }
    0x0001dbe8 sub r2, r4, r3                                |     r2 = r4 - r3;
                                                             |     do {
    0x0001dbec mov r0, r3                                    |         r0 = r3;
    0x0001dbf0 ldrb r1, [r3], 1                              |         r1 = *(r3);
                                                             |         r3++;
    0x0001dbf4 sub r2, r2, 1                                 |         r2--;
    0x0001dbf8 cmp r1, 0x20                                  |         
    0x0001dbfc cmpne r1, 0x3a                                |         __asm ("cmpne r1, 0x3a");
    0x0001dc00 beq 0x1dbec                                   |         
                                                             |     } while (r1 == 0x20);
    0x0001dc04 mov r1, r7                                    |     r1 = r7;
    0x0001dc08 bl 0x35a8                                     |     r0 = strncmp (r0, r1, r2);
    0x0001dc0c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001dc10 beq 0x1dc6c                                   |         goto label_6;
                                                             |     }
                                                             | label_5:
    0x0001dc14 ldr r2, [pc, 0xb4]                            |     r2 = *(0x1dccc);
    0x0001dc18 mov r1, 1                                     |     r1 = 1;
    0x0001dc1c add r2, pc, r2                                |     r2 = pc + r2;
    0x0001dc20 mov r0, 4                                     |     r0 = 4;
    0x0001dc24 bl 0x16364                                    |     fcn_00016364 (r0, r1, r2, r3);
    0x0001dc28 mvn r3, 0                                     |     r3 = ~0;
    0x0001dc2c str r3, [sp, 0xc]                             |     var_ch = r3;
                                                             |     do {
    0x0001dc30 ldr r2, [r5, 0x38]                            |         r2 = *((r5 + 0x38));
    0x0001dc34 cmp r2, 0                                     |         
                                                             |         if (r2 != 0) {
    0x0001dc38 beq 0x1dc54                                   |             
    0x0001dc3c ldr r0, [pc, 0x90]                            |             r0 = *(0x1dcd0);
    0x0001dc40 ldr r1, [pc, 0x90]                            |             r1 = *(0x1dcd4);
    0x0001dc44 add r0, pc, r0                                |             r0 = pc + r0;
    0x0001dc48 bl 0x1e960                                    |             fcn_0001e960 (r0, r1);
    0x0001dc4c mov r3, 0                                     |             r3 = 0;
    0x0001dc50 str r3, [r5, 0x38]                            |             *((r5 + 0x38)) = r3;
                                                             |         }
    0x0001dc54 mov r3, r6                                    |         r3 = r6;
    0x0001dc58 mov r2, r8                                    |         r2 = r8;
    0x0001dc5c mov r1, 0                                     |         r1 = 0;
    0x0001dc60 mov r0, r5                                    |         r0 = r5;
    0x0001dc64 bl 0x1bf44                                    |         fcn_0001bf44 (r0, r1);
    0x0001dc68 b 0x1da90                                     |         goto label_0;
                                                             | label_6:
    0x0001dc6c ldr r2, [pc, 0x68]                            |         r2 = *(0x1dcd8);
    0x0001dc70 mov r4, 1                                     |         r4 = 1;
    0x0001dc74 str r4, [r5, 0x34]                            |         *((r5 + 0x34)) = r4;
    0x0001dc78 add r2, pc, r2                                |         r2 = pc + r2;
    0x0001dc7c mov r1, r4                                    |         r1 = r4;
    0x0001dc80 mov r0, 4                                     |         r0 = 4;
    0x0001dc84 bl 0x16364                                    |         fcn_00016364 (r0, r1, r2, r3);
    0x0001dc88 str r4, [sp, 0xc]                             |         var_ch = r4;
    0x0001dc8c b 0x1dc30                                     |         
                                                             |     } while (1);
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libpaho-mqtt3as.so.1.3.9 @ 0x1dce0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001dce0 ()                                      | void fcn_0001dce0 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_2ch;
                                                                 |     time_t * var_30h;
                                                                 |     time_t * timer;
                                                                 |     int32_t var_38h;
                                                                 |     void * s;
                                                                 |     int32_t var_50h;
                                                                 |     int32_t var_54h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0001dce0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001dce4 ldr fp, [pc, 0x2b8]                               |     fp = *(0x1dfa0);
    0x0001dce8 sub sp, sp, 0x54                                  |     
    0x0001dcec mov r4, 0                                         |     r4 = 0;
    0x0001dcf0 mov r6, r2                                        |     r6 = r2;
    0x0001dcf4 mov r8, r0                                        |     r8 = r0;
    0x0001dcf8 mov r2, 0x14                                      |     r2 = 0x14;
    0x0001dcfc mov sl, r1                                        |     sl = r1;
    0x0001dd00 add r0, sp, 0x3c                                  |     r0 += s;
    0x0001dd04 mov r1, r4                                        |     r1 = r4;
    0x0001dd08 str r4, [sp, 0x28]                                |     var_28h = r4;
    0x0001dd0c str r4, [sp, 0x2c]                                |     var_2ch = r4;
    0x0001dd10 bl 0x38a8                                         |     memset (r0, r1, r2);
    0x0001dd14 ldr r0, [pc, 0x28c]                               |     
    0x0001dd18 mov r2, 3                                         |     r2 = 3;
    0x0001dd1c add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001dd20 ldr r1, [pc, 0x284]                               |     r1 = *(0x1dfa8);
    0x0001dd24 add r0, r0, 0xe8                                  |     r0 = 0x1e08c;
    0x0001dd28 bl 0x1e0d4                                        |     fcn_0001e0d4 (r0, r1);
    0x0001dd2c mov r3, 0x50                                      |     r3 = 0x50;
    0x0001dd30 mov r2, r4                                        |     r2 = r4;
    0x0001dd34 add r1, sp, 0x24                                  |     r1 += var_24h;
    0x0001dd38 mov r0, r6                                        |     r0 = r6;
    0x0001dd3c bl 0x18824                                        |     fcn_00018824 (r0, r1);
    0x0001dd40 ldr r3, [pc, 0x268]                               |     r3 = *(0x1dfac);
    0x0001dd44 mov r5, r4                                        |     r5 = r4;
    0x0001dd48 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001dd4c str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0001dd50 ldr r3, [pc, 0x25c]                               |     r3 = *(0x1dfb0);
    0x0001dd54 mov sb, r4                                        |     sb = r4;
    0x0001dd58 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001dd5c add fp, pc, fp                                    |     
    0x0001dd60 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0001dd64 mov r7, r0                                        |     r7 = r0;
                                                                 |     do {
    0x0001dd68 cmp sl, 0                                         |         
    0x0001dd6c ldr r3, [sp, 0x24]                                |         r3 = var_24h;
                                                                 |         if (sl == 0) {
    0x0001dd70 beq 0x1de40                                       |             goto label_7;
                                                                 |         }
    0x0001dd74 ldr r2, [r8, 0x28]                                |         r2 = *((r8 + 0x28));
    0x0001dd78 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x0001dd7c beq 0x1de1c                                       |             goto label_8;
                                                                 |         }
    0x0001dd80 str r2, [sp, 0x10]                                |         var_10h = r2;
    0x0001dd84 ldr r2, [pc, 0x22c]                               |         r2 = *(0x1dfb4);
    0x0001dd88 stmib sp, {r3, r7}                                |         __asm ("stmib sp, {r3, r7}");
    0x0001dd8c add r2, pc, r2                                    |         r2 = pc + r2;
    0x0001dd90 mov r3, r7                                        |         r3 = r7;
    0x0001dd94 str r6, [sp, 0xc]                                 |         var_ch = r6;
    0x0001dd98 str r6, [sp]                                      |         *(sp) = r6;
                                                                 | label_1:
    0x0001dd9c mov r1, r5                                        |         r1 = r5;
    0x0001dda0 mov r0, r4                                        |         r0 = r4;
    0x0001dda4 bl 0x3638                                         |         snprintf (r0, r1, r2, r3)
                                                                 | label_0:
    0x0001dda8 eor r3, sb, 1                                     |         r3 = sb ^ 1;
    0x0001ddac cmp r0, 0                                         |         
                                                                 |         if (r0 > 0) {
    0x0001ddb0 movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r0 <= 0) {
    0x0001ddb4 andgt r3, r3, 1                                   |             r3 &= 1;
                                                                 |         }
    0x0001ddb8 cmp r3, 0                                         |         
    0x0001ddbc mov r5, r0                                        |         r5 = r0;
                                                                 |         if (r3 == 0) {
    0x0001ddc0 beq 0x1de80                                       |             goto label_9;
                                                                 |         }
    0x0001ddc4 add r5, r0, 1                                     |         r5 = r0 + 1;
    0x0001ddc8 ldr r0, [pc, 0x1ec]                               |         r0 = *(0x1dfb8);
    0x0001ddcc mov r2, r5                                        |         r2 = r5;
    0x0001ddd0 ldr r1, [pc, 0x1e8]                               |         r1 = *(0x1dfbc);
    0x0001ddd4 add r0, pc, r0                                    |         r0 = pc + r0;
    0x0001ddd8 bl 0x1e7a4                                        |         r0 = fcn_0001e7a4 (r0, r1);
    0x0001dddc subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 != r0) {
    0x0001dde0 bne 0x1de80                                       |             goto label_9;
                                                                 |         }
    0x0001dde4 mvn r3, 0x62                                      |         r3 = ~0x62;
    0x0001dde8 str r3, [sp, 0x28]                                |         var_28h = r3;
                                                                 | label_3:
    0x0001ddec ldr r0, [pc, 0x1d0]                               |         
    0x0001ddf0 mov r3, 3                                         |         r3 = 3;
    0x0001ddf4 add r0, pc, r0                                    |         r0 = pc + r0;
    0x0001ddf8 add r2, sp, 0x28                                  |         r2 += var_28h;
    0x0001ddfc ldr r1, [pc, 0x1c4]                               |         r1 = *(0x1dfc4);
    0x0001de00 add r0, r0, 0xe8                                  |         r0 = 0x1e0a8;
    0x0001de04 bl 0x1e1bc                                        |         fcn_0001e1bc (r0, r1);
    0x0001de08 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x0001de0c add sp, sp, 0x54                                  |         
    0x0001de10 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_2:
    0x0001de14 mov sb, 1                                         |         sb = 1;
    0x0001de18 b 0x1dd68                                         |         
                                                                 |     } while (1);
                                                                 | label_8:
    0x0001de1c stmib sp, {r3, r7}                                |     __asm ("stmib sp, {r3, r7}");
    0x0001de20 mov r2, fp                                        |     r2 = fp;
    0x0001de24 mov r3, r7                                        |     r3 = r7;
    0x0001de28 str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x0001de2c str r6, [sp]                                      |     *(sp) = r6;
                                                                 |     do {
    0x0001de30 mov r1, r5                                        |         r1 = r5;
    0x0001de34 mov r0, r4                                        |         r0 = r4;
    0x0001de38 bl 0x3638                                         |         snprintf (r0, r1, r2, r3)
    0x0001de3c b 0x1dda8                                         |         goto label_0;
                                                                 | label_7:
    0x0001de40 ldr r2, [r8, 0x30]                                |         r2 = *((r8 + 0x30));
    0x0001de44 cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x0001de48 beq 0x1de68                                       |             
    0x0001de4c str r2, [sp, 0x10]                                |             var_10h = r2;
    0x0001de50 stmib sp, {r3, r7}                                |             __asm ("stmib sp, {r3, r7}");
    0x0001de54 ldr r2, [sp, 0x1c]                                |             r2 = var_1ch;
    0x0001de58 str r6, [sp, 0xc]                                 |             var_ch = r6;
    0x0001de5c str r6, [sp]                                      |             *(sp) = r6;
    0x0001de60 mov r3, r7                                        |             r3 = r7;
    0x0001de64 b 0x1dd9c                                         |             goto label_1;
                                                                 |         }
    0x0001de68 stmib sp, {r3, r7}                                |         __asm ("stmib sp, {r3, r7}");
    0x0001de6c ldr r2, [sp, 0x18]                                |         r2 = var_18h;
    0x0001de70 str r6, [sp, 0xc]                                 |         var_ch = r6;
    0x0001de74 str r6, [sp]                                      |         *(sp) = r6;
    0x0001de78 mov r3, r7                                        |         r3 = r7;
    0x0001de7c b 0x1de30                                         |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x0001de80 cmp sb, 1                                         |     
                                                                 |     if (sb != 1) {
    0x0001de84 bne 0x1de14                                       |         goto label_2;
                                                                 |     }
    0x0001de88 ldr r2, [pc, 0x13c]                               |     r2 = *(0x1dfc8);
    0x0001de8c mov r3, r4                                        |     r3 = r4;
    0x0001de90 add r2, pc, r2                                    |     r2 = pc + r2;
    0x0001de94 mvn r1, 0                                         |     r1 = ~0;
    0x0001de98 mov r0, 4                                         |     r0 = 4;
    0x0001de9c bl 0x16364                                        |     fcn_00016364 (r0, r1, r2, r3);
    0x0001dea0 add r3, sp, 0x50                                  |     r3 += var_50h;
    0x0001dea4 ldmdb r3, {r0, r1, r2, r3}                        |     __asm ("ldmdb r3, {r0, r1, r2, r3}");
    0x0001dea8 add r6, sp, 0x28                                  |     r6 += var_28h;
    0x0001deac stm sp, {r0, r1, r2, r3}                          |     *(sp) = r0;
                                                                 |     *((sp + 4)) = r1;
                                                                 |     *((sp + 8)) = r2;
                                                                 |     *((sp + 12)) = r3;
    0x0001deb0 ldr r3, [sp, 0x3c]                                |     r3 = s;
    0x0001deb4 mov r2, r5                                        |     r2 = r5;
    0x0001deb8 mov r1, r4                                        |     r1 = r4;
    0x0001debc ldr r0, [r8]                                      |     r0 = *(r8);
    0x0001dec0 bl 0x146d8                                        |     fcn_000146d8 (r0, r1, r2, r3, r4);
    0x0001dec4 ldr r0, [pc, 0x104]                               |     r0 = *(0x1dfcc);
    0x0001dec8 mov r2, r4                                        |     r2 = r4;
    0x0001decc ldr r1, [pc, 0x100]                               |     r1 = *(0x1dfd0);
    0x0001ded0 add r0, pc, r0                                    |     r0 = pc + r0;
    0x0001ded4 bl 0x1e960                                        |     fcn_0001e960 (r0, r1);
    0x0001ded8 add r0, sp, 0x34                                  |     r0 += timer;
    0x0001dedc bl 0x374c                                         |     time (r0);
    0x0001dee0 ldr r3, [sp, 0x34]                                |     r3 = timer;
    0x0001dee4 ldr r5, [pc, 0xec]                                |     r5 = *(0x1dfd4);
    0x0001dee8 add r3, r3, 0xa                                   |     r3 += 0xa;
    0x0001deec add r4, sp, 0x2c                                  |     r4 += var_2ch;
    0x0001def0 str r3, [sp, 0x34]                                |     timer = r3;
                                                                 | label_6:
    0x0001def4 mov r3, r6                                        |     r3 = r6;
    0x0001def8 mov r2, r4                                        |     r2 = r4;
    0x0001defc mov r1, 0xc                                       |     r1 = 0xc;
    0x0001df00 ldr r0, [r8]                                      |     r0 = *(r8);
    0x0001df04 bl 0x143a0                                        |     fcn_000143a0 (r0, r1);
    0x0001df08 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0001df0c cmp r3, 0                                         |     
    0x0001df10 mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r3 == 0) {
    0x0001df14 beq 0x1df84                                       |         goto label_10;
                                                                 |     }
    0x0001df18 ldr r1, [pc, 0xbc]                                |     r1 = *(0x1dfd8);
    0x0001df1c mov r2, 0xc                                       |     r2 = 0xc;
    0x0001df20 add r1, pc, r1                                    |     r1 = pc + r1;
    0x0001df24 bl 0x35a8                                         |     r0 = strncmp (r0, r1, r2);
    0x0001df28 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001df2c beq 0x1df54                                       |         
    0x0001df30 ldr r1, [pc, 0xa8]                                |         r1 = *(0x1dfdc);
    0x0001df34 mov r2, 0xc                                       |         r2 = 0xc;
    0x0001df38 add r1, pc, r1                                    |         r1 = pc + r1;
    0x0001df3c mov r0, r7                                        |         r0 = r7;
    0x0001df40 bl 0x35a8                                         |         r0 = strncmp (r0, r1, r2);
    0x0001df44 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0001df48 beq 0x1df54                                       |             goto label_11;
                                                                 |         }
                                                                 | label_5:
    0x0001df4c mvn r3, 0                                         |         r3 = ~0;
    0x0001df50 str r3, [sp, 0x28]                                |         var_28h = r3;
                                                                 |     }
                                                                 | label_11:
    0x0001df54 mov r3, 1                                         |     r3 = 1;
    0x0001df58 add r5, sp, 0x38                                  |     r5 += var_38h;
    0x0001df5c str r3, [sp, 0x2c]                                |     var_2ch = r3;
                                                                 | label_4:
    0x0001df60 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0001df64 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001df68 beq 0x1ddec                                       |         goto label_3;
                                                                 |     }
    0x0001df6c mov r3, r5                                        |     r3 = r5;
    0x0001df70 mov r2, r4                                        |     r2 = r4;
    0x0001df74 mov r1, 1                                         |     r1 = 1;
    0x0001df78 ldr r0, [r8]                                      |     r0 = *(r8);
    0x0001df7c bl 0x143a0                                        |     fcn_000143a0 (r0, r1);
    0x0001df80 b 0x1df60                                         |     goto label_4;
                                                                 | label_10:
    0x0001df84 add r0, sp, 0x30                                  |     r0 += var_30h;
    0x0001df88 bl 0x374c                                         |     time (r0);
    0x0001df8c ldrd r2, r3, [sp, 0x30]                           |     __asm ("ldrd r2, r3, [timer]");
    0x0001df90 cmp r2, r3                                        |     
                                                                 |     if (r2 > r3) {
    0x0001df94 bgt 0x1df4c                                       |         goto label_5;
                                                                 |     }
    0x0001df98 mov r0, r5                                        |     r0 = r5;
    0x0001df9c bl 0x3488                                         |     usleep (r0);
    0x0001dfa0 b 0x1def4                                         |     goto label_6;
                                                                 | }

[*] Function printf used 33 times libpaho-mqtt3as.so.1.3.9