[*] Binary protection state of libcurl.so.4.8.0

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


[*] Function strcat tear down of libcurl.so.4.8.0

    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libcurl.so.4.8.0 @ 0xeb44 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000eb44 ()                      | void fcn_0000eb44 (int16_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int32_t var_4h;
                                                 |     int32_t var_4h_2;
                                                 |     int32_t var_18h;
                                                 |     int32_t var_18h_2;
                                                 |     r0 = arg1;
    0x0000eb44 mlalo pc, r0, r8, pc              |     __asm ("mlalo pc, r0, r8, pc");
    0x0000eb48 push {r4, r5, r6, r7, lr}         |     
    0x0000eb4a sub sp, 0x24                      |     
                                                 |     if (r3 != 0) {
    0x0000eb4c cbnz r3, 0xeb8e                   |         goto label_4;
                                                 |     }
    0x0000eb4e ldrb.w r2, [r0, 0x2c]             |     r2 = *((r0 + 0x2c));
    0x0000eb52 ldr r1, [pc, 0xa8]                |     
    0x0000eb54 ldr r3, [r0, 0x14]                |     r3 = *((r0 + 0x14));
    0x0000eb56 add r1, pc                        |     r1 = 0x1d758;
                                                 |     if (r2 == 0) {
    0x0000eb58 cbz r2, 0xeb9c                    |         goto label_5;
                                                 |     }
                                                 |     do {
    0x0000eb5a cmp r3, 0                         |         
                                                 |         if (r3 == 0) {
    0x0000eb5c beq 0xebde                        |             goto label_6;
                                                 |         }
    0x0000eb5e ldrb r2, [r3]                     |         r2 = *(r3);
    0x0000eb60 cmp r2, 0x2e                      |         
                                                 |         if (r2 == 0x2e) {
    0x0000eb62 beq 0xebe2                        |             goto label_7;
                                                 |         }
    0x0000eb64 ldr r4, [r0, 0xc]                 |         r4 = *((r0 + 0xc));
    0x0000eb66 ldr r2, [pc, 0x98]                |         
    0x0000eb68 ldr r6, [pc, 0x98]                |         
    0x0000eb6a add r2, pc                        |         r2 = 0x1d770;
    0x0000eb6c add r6, pc                        |         r6 = 0x1d774;
                                                 |         if (r4 != 0) {
    0x0000eb6e cbnz r4, 0xebac                   |             goto label_8;
                                                 |         }
                                                 | label_0:
    0x0000eb70 ldrb.w r5, [r0, 0x2d]             |         r5 = *((r0 + 0x2d));
    0x0000eb74 ldr r4, [pc, 0x90]                |         
    0x0000eb76 add r4, pc                        |         r4 = 0x1d782;
                                                 |         if (r5 == 0) {
    0x0000eb78 cbz r5, 0xebb4                    |             goto label_9;
                                                 |         }
                                                 | label_1:
    0x0000eb7a ldrd ip, r5, [r0, 4]              |         __asm ("ldrd ip, r5, [r0, 4]");
    0x0000eb7e ldr r7, [pc, 0x8c]                |         
    0x0000eb80 vldr d16, [r0, 0x18]              |         __asm ("vldr d16, [r0, 0x18]");
    0x0000eb84 add r7, pc                        |         r7 = 0x1d796;
                                                 |         if (r5 != 0) {
    0x0000eb86 cbnz r5, 0xebc4                   |             goto label_10;
                                                 |         }
                                                 | label_2:
    0x0000eb88 ldr r5, [pc, 0x84]                |         
    0x0000eb8a add r5, pc                        |         r5 = 0x1d79e;
    0x0000eb8c b 0xebc4                          |         goto label_10;
                                                 | label_4:
    0x0000eb8e ldrb.w r2, [r0, 0x2c]             |         r2 = *((r0 + 0x2c));
    0x0000eb92 ldr r1, [pc, 0x80]                |         
    0x0000eb94 ldr r3, [r0, 0x14]                |         r3 = *((r0 + 0x14));
    0x0000eb96 add r1, pc                        |         r1 = 0x1d7b0;
    0x0000eb98 cmp r2, 0                         |         
    0x0000eb9a bne 0xeb5a                        |         
                                                 |     } while (r2 != 0);
                                                 |     if (r3 == 0) {
                                                 | label_5:
    0x0000eb9c cbz r3, 0xebec                    |         goto label_11;
                                                 |     }
    0x0000eb9e ldr r2, [pc, 0x78]                |     
    0x0000eba0 ldr r6, [pc, 0x78]                |     
    0x0000eba2 add r2, pc                        |     r2 = 0x1d7c0;
    0x0000eba4 add r6, pc                        |     r6 = 0x1d7c4;
                                                 | label_3:
    0x0000eba6 ldr r4, [r0, 0xc]                 |     r4 = *((r0 + 0xc));
    0x0000eba8 cmp r4, 0                         |     
                                                 |     if (r4 == 0) {
    0x0000ebaa beq 0xeb70                        |         goto label_0;
                                                 |     }
                                                 | label_8:
    0x0000ebac ldrb.w r5, [r0, 0x2d]             |     r5 = *((r0 + 0x2d));
    0x0000ebb0 cmp r5, 0                         |     
                                                 |     if (r5 != 0) {
    0x0000ebb2 bne 0xeb7a                        |         goto label_1;
                                                 |     }
                                                 | label_9:
    0x0000ebb4 ldrd ip, r5, [r0, 4]              |     __asm ("ldrd ip, r5, [r0, 4]");
    0x0000ebb8 ldr r7, [pc, 0x64]                |     
    0x0000ebba vldr d16, [r0, 0x18]              |     __asm ("vldr d16, [r0, 0x18]");
    0x0000ebbe add r7, pc                        |     r7 = 0x1d7e2;
    0x0000ebc0 cmp r5, 0                         |     
                                                 |     if (r5 == 0) {
    0x0000ebc2 beq 0xeb88                        |         goto label_2;
                                                 |     }
                                                 | label_10:
    0x0000ebc4 ldr r0, [pc, 0x5c]                |     
    0x0000ebc6 vstr d16, [sp, 0x10]              |     __asm ("vstr d16, [sp, 0x10]");
    0x0000ebca strd ip, r5, [sp, 0x18]           |     __asm ("strd ip, r5, [var_18h]");
    0x0000ebce strd r4, r7, [sp, 4]              |     __asm ("strd r4, r7, [var_4h]");
    0x0000ebd2 add r0, pc                        |     r0 = 0x1d7fa;
    0x0000ebd4 str r6, [sp]                      |     *(sp) = r6;
    0x0000ebd6 blx 0x8444                        |     SSL_get_error ();
    0x0000ebda add sp, 0x24                      |     
    0x0000ebdc pop {r4, r5, r6, r7, pc}          |     
                                                 | label_6:
    0x0000ebde ldr r3, [pc, 0x48]                |     
    0x0000ebe0 add r3, pc                        |     r3 = 0x1d80e;
                                                 | label_7:
    0x0000ebe2 ldr r2, [pc, 0x48]                |     
    0x0000ebe4 ldr r6, [pc, 0x48]                |     
    0x0000ebe6 add r2, pc                        |     r2 = 0x1d818;
    0x0000ebe8 add r6, pc                        |     r6 = 0x1d81c;
    0x0000ebea b 0xeba6                          |     goto label_3;
                                                 | label_11:
    0x0000ebec ldr r2, [pc, 0x44]                |     
    0x0000ebee ldr r3, [pc, 0x48]                |     
    0x0000ebf0 ldr r6, [pc, 0x48]                |     
    0x0000ebf2 add r2, pc                        |     r2 = 0x1d82a;
    0x0000ebf4 add r3, pc                        |     r3 = 0x1d832;
    0x0000ebf6 add r6, pc                        |     r6 = 0x1d836;
    0x0000ebf8 b 0xeba6                          |     goto label_3;
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libcurl.so.4.8.0 @ 0x4368c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0004368c ()                                      | uint32_t fcn_0004368c (int16_t arg_1h, int16_t arg_268h, int16_t arg_390h, int16_t arg1) {
                                                                 |     int16_t var_c4h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_104h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_fh;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 | label_3:
    0x00043124 ldr r3, [pc, 0x8c]                                |     
    0x00043126 ldr r1, [pc, 0x90]                                |     
    0x00043128 ldr r2, [pc, 0x90]                                |     r2 = *(0x431bc);
    0x0004312a add r3, pc                                        |     r3 = 0x862e2;
    0x0004312c push.w {r4, r5, r6, r7, r8, lr}                   |     
    0x00043130 ldr r6, [r3]                                      |     r6 = *(0x862e2);
    0x00043132 add r1, pc                                        |     r1 = 0x862f0;
    0x00043134 sub sp, 0x108                                     |     
    0x00043136 ldr r2, [r1, r2]                                  |     
    0x00043138 cmp r0, 0                                         |     
    0x0004313a it ne                                             |     
                                                                 |     if (r0 != 0) {
    0x0004313c cmpne r6, 0                                       |         __asm ("cmpne r6, 0");
                                                                 |     }
    0x0004313e ite eq                                            |     
                                                                 |     if (r0 != 0) {
    0x00043140 moveq r7, 1                                       |         r7 = 1;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00043142 movne r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x00043144 ldr r2, [r2]                                      |     r2 = *(0x862f0);
    0x00043146 str r2, [sp, 0x104]                               |     var_104h = r2;
    0x00043148 mov.w r2, 0                                       |     r2 = 0;
    0x0004314c it eq                                             |     
                                                                 |     if (r0 != 0) {
    0x0004314e moveq r7, 0                                       |         r7 = 0;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00043150 beq 0x43164                                       |         goto label_4;
                                                                 |     }
    0x00043152 mov r4, r0                                        |     r4 = r0;
    0x00043154 blx 0x7b38                                        |     r0 = PEM_read_bio_PrivateKey ();
    0x00043158 add.w r8, r0, -1                                  |     r8 = r0 + -1;
    0x0004315c mov r5, r0                                        |     r5 = r0;
    0x0004315e cmp.w r8, 0xfd                                    |     
    0x00043162 bls 0x43180                                       |     
                                                                 |     while (1) {
                                                                 | label_4:
    0x00043164 ldr r2, [pc, 0x58]                                |         
    0x00043166 ldr r3, [pc, 0x54]                                |         r3 = *(0x431be);
    0x00043168 add r2, pc                                        |         r2 = 0x8632c;
    0x0004316a ldr r3, [r2, r3]                                  |         r3 = *(0x8632c);
    0x0004316c ldr r2, [r3]                                      |         r2 = *(0x8632c);
    0x0004316e ldr r3, [sp, 0x104]                               |         r3 = var_104h;
    0x00043170 eors r2, r3                                       |         r2 ^= r3;
    0x00043172 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00043176 bne 0x431ae                                       |             goto label_5;
                                                                 |         }
    0x00043178 mov r0, r7                                        |         r0 = r7;
    0x0004317a add sp, 0x108                                     |         
    0x0004317c pop.w {r4, r5, r6, r7, r8, pc}                    |         
    0x00043180 add r7, sp, 4                                     |         r7 += var_4h;
    0x00043182 mov r2, r0                                        |         r2 = r0;
    0x00043184 mov r1, r4                                        |         r1 = r4;
    0x00043186 mov.w r3, 0x100                                   |         r3 = 0x100;
    0x0004318a mov r0, r7                                        |         r0 = r7;
    0x0004318c blx 0x7a00                                        |         MD5_Final ();
    0x00043190 ldrb.w r3, [r4, r8]                               |         r3 = *((r4 + r8));
    0x00043194 mov r1, r6                                        |         r1 = r6;
    0x00043196 mov r0, r7                                        |         r0 = r7;
    0x00043198 cmp r3, 0xa                                       |         
    0x0004319a ittt ne                                           |         
                                                                 |         if (r3 == 0xa) {
    0x0004319c movne r3, 0xa                                     |             r3 = 0xa;
                                                                 |         }
                                                                 |         if (r3 == 0xa) {
    0x0004319e strbne r3, [r7, r5]                               |             *((r7 + r5)) = r3;
                                                                 |         }
                                                                 |         if (r3 == 0xa) {
    0x000431a0 addne r5, 1                                       |             r5++;
                                                                 |         }
    0x000431a2 movs r3, 0                                        |         r3 = 0;
    0x000431a4 strb r3, [r7, r5]                                 |         *((r7 + r5)) = r3;
    0x000431a6 movs r7, 1                                        |         r7 = 1;
    0x000431a8 blx 0x8594                                        |         fcn_00008594 ();
    0x000431ac b 0x43164                                         |         
                                                                 |     }
                                                                 | label_5:
    0x000431ae blx 0x7f7c                                        |     gmtime_r ();
    0x000431b2 nop                                               |     
    0x000431b4 ldr r1, [sp, 0x268]                               |     r1 = *(arg_268h);
    0x000431b6 movs r2, r0                                       |     r2 = r0;
    0x000431b8 strb r2, [r1, 0x1e]                               |     *((r1 + 0x1e)) = r2;
    0x000431ba movs r2, r0                                       |     r2 = r0;
    0x000431bc lsls r4, r3, 0x1b                                 |     r4 = r3 << 0x1b;
    0x000431be movs r0, r0                                       |     
    0x000431c0 strb r4, [r2, 0x1d]                               |     *((r2 + 0x1d)) = r4;
    0x000431c2 movs r2, r0                                       |     r2 = r0;
    0x000431c4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000431c6 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x4358a);
    0x000431c8 mov r6, r2                                        |     r6 = r2;
    0x000431ca ldr r2, [pc, 0x108]                               |     
    0x000431cc mov r5, r3                                        |     r5 = r3;
    0x000431ce sub sp, 0xcc                                      |     
    0x000431d0 ldr r3, [pc, 0x104]                               |     r3 = *(0x432d8);
    0x000431d2 add r2, pc                                        |     r2 = 0x864ac;
    0x000431d4 ldr r3, [r2, r3]                                  |     
    0x000431d6 ldr r3, [r3]                                      |     r3 = *(0x864ac);
    0x000431d8 str r3, [sp, 0xc4]                                |     var_c4h = r3;
    0x000431da mov.w r3, 0                                       |     r3 = 0;
    0x000431de ldr r3, [pc, 0xfc]                                |     
    0x000431e0 add r3, pc                                        |     r3 = 0x864c2;
    0x000431e2 ldr r7, [r3]                                      |     r7 = *(0x864c2);
                                                                 |     if (r7 != 0) {
    0x000431e4 cbz r7, 0x431fe                                   |         
    0x000431e6 add.w r8, r5, -1                                  |         r8 = r5 + -1;
    0x000431ea mov r4, r0                                        |         r4 = r0;
    0x000431ec mov fp, r1                                        |         
    0x000431ee blx 0x7b38                                        |         PEM_read_bio_PrivateKey ();
    0x000431f2 cmp.w r8, 0x2f                                    |         
    0x000431f6 it ls                                             |         
                                                                 |         if (r8 <= 0x2f) {
    0x000431f8 cmpls r0, 0x1f                                    |             __asm ("cmpls r0, 0x1f");
                                                                 |         }
    0x000431fa mov sl, r0                                        |         sl = r0;
                                                                 |         if (r8 < 0x2f) {
    0x000431fc bls 0x4321a                                       |             goto label_6;
                                                                 |         }
                                                                 |     }
    0x000431fe movs r0, 0                                        |     r0 = 0;
                                                                 | label_0:
    0x00043200 ldr r2, [pc, 0xdc]                                |     
    0x00043202 ldr r3, [pc, 0xd4]                                |     r3 = *(0x432da);
    0x00043204 add r2, pc                                        |     r2 = 0x864e8;
    0x00043206 ldr r3, [r2, r3]                                  |     r3 = *(0x864e8);
    0x00043208 ldr r2, [r3]                                      |     r2 = *(0x864e8);
    0x0004320a ldr r3, [sp, 0xc4]                                |     r3 = var_c4h;
    0x0004320c eors r2, r3                                       |     r2 ^= r3;
    0x0004320e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00043212 bne 0x432ce                                       |         goto label_7;
                                                                 |     }
    0x00043214 add sp, 0xcc                                      |     
    0x00043216 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_6:
    0x0004321a mov sb, sp                                        |     sb = sp;
    0x0004321c mov r1, r4                                        |     r1 = r4;
    0x0004321e mov r2, r0                                        |     r2 = r0;
    0x00043220 movs r3, 0xc3                                     |     r3 = 0xc3;
    0x00043222 mov r0, sb                                        |     r0 = sb;
    0x00043224 add.w r4, fp, -1                                  |     r4 = fp + -1;
    0x00043228 blx 0x7a00                                        |     MD5_Final ();
    0x0004322c ldr r3, [pc, 0xb4]                                |     
    0x0004322e add.w r1, sb, sl                                  |     r1 = sb + sl;
    0x00043232 add.w r2, sl, 0xc8                                |     r2 = sl + 0xc8;
    0x00043236 add.w fp, fp, 0x1f                                |     
    0x0004323a mov lr, r1                                        |     lr = r1;
    0x0004323c add.w r0, sp, r2                                  |     r0 = sp + r2;
    0x00043240 add r3, pc                                        |     r3 = 0x86528;
    0x00043242 movs r2, 0x20                                     |     r2 = 0x20;
    0x00043244 strb r2, [r0, -0xc8]                              |     *((r0 - 0xc8)) = r2;
    0x00043246 cmp r4, 0xc8                                      |     
                                                                 |     do {
    0x00043248 ldrb ip, [r4, 1]!                                 |         ip = *((r4 += 1));
    0x0004324c and r2, ip, 0xf                                   |         r2 = ip & 0xf;
    0x00043250 cmp r4, fp                                        |         
    0x00043252 lsr.w ip, ip, 4                                   |         
    0x00043256 ldrb r2, [r3, r2]                                 |         r2 = *((r3 + r2));
    0x00043258 ldrb.w ip, [r3, ip]                               |         ip = *((r3 + ip));
    0x0004325c strb.w ip, [lr, 1]                                |         *((lr + 1)) = ip;
    0x00043260 strb r2, [lr, 2]!                                 |         *((lr += 2)) = r2;
    0x00043264 bne 0x43248                                       |         
                                                                 |     } while (r4 != fp);
    0x00043266 ldr.w ip, [pc, 0x80]                              |     
    0x0004326a add.w sl, sl, 0x42                                |     sl += 0x42;
    0x0004326e subs r4, r6, 1                                    |     r4 = r6 - 1;
    0x00043270 movs r3, 0x20                                     |     r3 = 0x20;
    0x00043272 strb r3, [r0, -0x87]                              |     *((r0 - 0x87)) = r3;
    0x00043276 add ip, pc                                        |     ip = 0x86564;
                                                                 |     do {
    0x00043278 mov r3, r4                                        |         r3 = r4;
    0x0004327a ldrb r2, [r4, 1]!                                 |         r2 = *((r4 += 1));
    0x0004327e adds r3, 2                                        |         r3 += 2;
    0x00043280 adds r1, 2                                        |         r1 += 2;
    0x00043282 subs r3, r3, r6                                   |         r3 -= r6;
    0x00043284 and r0, r2, 0xf                                   |         r0 = r2 & 0xf;
    0x00043288 cmp r5, r3                                        |         
    0x0004328a lsr.w r2, r2, 4                                   |         r2 >>= 4;
    0x0004328e ldrb.w r0, [ip, r0]                               |         r0 = *((ip + r0));
    0x00043292 ldrb.w r2, [ip, r2]                               |         r2 = *((ip + r2));
    0x00043296 strb.w r0, [r1, 0x41]                             |         *((r1 + 0x41)) = r0;
    0x0004329a strb.w r2, [r1, 0x40]                             |         *((r1 + 0x40)) = r2;
    0x0004329e bhi 0x43278                                       |         
                                                                 |     } while (r5 > r3);
    0x000432a0 lsl.w r8, r8, 1                                   |     r8 <<= 1;
    0x000432a4 cmp r5, 0                                         |     
    0x000432a6 add.w r3, sl, 0xc8                                |     r3 = sl + 0xc8;
    0x000432aa add.w sl, sp, r3                                  |     sl = sp + r3;
    0x000432ae it eq                                             |     
                                                                 |     if (r5 != 0) {
    0x000432b0 moveq r8, 0                                       |         r8 = 0;
                                                                 |     }
    0x000432b4 movs r3, 0xa                                      |     r3 = 0xa;
    0x000432b6 add sl, r8                                        |     sl += r8;
    0x000432b8 strb r3, [sl, -0xc6]                              |     *((sl - 0xc6)) = r3;
    0x000432bc movs r3, 0                                        |     r3 = 0;
    0x000432be mov r1, r7                                        |     r1 = r7;
    0x000432c0 mov r0, sb                                        |     r0 = sb;
    0x000432c2 strb r3, [sl, -0xc5]                              |     *((sl - 0xc5)) = r3;
    0x000432c6 blx 0x8594                                        |     fcn_00008594 ();
    0x000432ca movs r0, 1                                        |     r0 = 1;
    0x000432cc b 0x43200                                         |     goto label_0;
                                                                 | label_7:
    0x000432ce blx 0x7f7c                                        |     gmtime_r ();
    0x000432d2 nop                                               |     
    0x000432d4 strb r2, [r5, 0x1b]                               |     *((r5 + 0x1b)) = r2;
    0x000432d6 movs r2, r0                                       |     r2 = r0;
    0x000432d8 lsls r4, r3, 0x1b                                 |     r4 = r3 << 0x1b;
    0x000432da movs r0, r0                                       |     
    0x000432dc ldr r0, [sp, 0x390]                               |     r0 = *(arg_390h);
    0x000432de movs r2, r0                                       |     r2 = r0;
    0x000432e0 strb r0, [r7, 0x1a]                               |     *((r7 + 0x1a)) = r0;
    0x000432e2 movs r2, r0                                       |     r2 = r0;
    0x000432e4 stm r5!, {r2, r4, r7}                             |     *(r5!) = r2;
                                                                 |     *((r5! + 4)) = r4;
                                                                 |     *((r5! + 8)) = r7;
    0x000432e6 movs r0, r0                                       |     
    0x000432e8 stm r5!, {r1, r2, r3, r4, r6}                     |     *(r5!) = r1;
                                                                 |     *((r5! + 4)) = r2;
                                                                 |     *((r5! + 8)) = r3;
                                                                 |     *((r5! + 12)) = r4;
                                                                 |     *((r5! + 16)) = r6;
    0x000432ea movs r0, r0                                       |     
    0x000432ec movs r0, r0                                       |     
    0x000432ee movs r0, r0                                       |     
    0x000432f0 subs r0, 0                                        |     
    0x000432f2 it ne                                             |     
                                                                 |     if (r0 == 0) {
    0x000432f4 movne r0, 1                                       |         r0 = 1;
                                                                 |     }
    0x000432f6 bx lr                                             |     return r0;
    0x0004368c ldr r2, [pc, 0x7c]                                |     
    0x0004368e ldr r3, [pc, 0x80]                                |     r3 = *(0x43712);
    0x00043690 push {r4, lr}                                     |     
    0x00043692 sub sp, 0x28                                      |     
    0x00043694 add r2, pc                                        |     r2 = 0x86da4;
    0x00043696 ldr r3, [r2, r3]                                  |     
    0x00043698 ldr r2, [r0, 8]                                   |     r2 = *((r0 + 8));
    0x0004369a ldr r3, [r3]                                      |     r3 = *(0x86da4);
    0x0004369c str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0004369e mov.w r3, 0                                       |     r3 = 0;
    0x000436a2 mov r3, r0                                        |     r3 = r0;
    0x000436a4 ldr r4, [r2, 0x18]                                |     r4 = *(0x86dbc);
    0x000436a6 ldr r0, [r4, 4]                                   |     r0 = *(0x86dc0);
                                                                 |     if (r0 == 0) {
    0x000436a8 cbz r0, 0x436bc                                   |         goto label_8;
                                                                 |     }
    0x000436aa ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
                                                                 |     if (r3 == 0) {
    0x000436ac cbz r3, 0x436b4                                   |         goto label_9;
                                                                 |     }
    0x000436ae ldrb r3, [r3, 0x14]                               |     r3 = *((r3 + 0x14));
    0x000436b0 lsls r3, r3, 0x1f                                 |     r3 <<= 0x1f;
    0x000436b2 bmi 0x436ee                                       |     
                                                                 |     while (1) {
                                                                 | label_9:
    0x000436b4 blx 0x7e40                                        |         fcn_00007e40 ();
    0x000436b8 movs r3, 0                                        |         r3 = 0;
    0x000436ba str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
                                                                 | label_8:
    0x000436bc ldr r0, [r4]                                      |         r0 = *(r4);
                                                                 |         if (r0 != 0) {
    0x000436be cbz r0, 0x436ca                                   |             
    0x000436c0 blx 0x7370                                        |             UI_method_set_reader ();
    0x000436c4 movs r3, 0                                        |             r3 = 0;
    0x000436c6 str r3, [r4]                                      |             *(r4) = r3;
    0x000436c8 strb r3, [r4, 0x14]                               |             *((r4 + 0x14)) = r3;
                                                                 |         }
    0x000436ca ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
                                                                 |         if (r0 != 0) {
    0x000436cc cbz r0, 0x436d6                                   |             
    0x000436ce blx 0x7dbc                                        |             fcn_00007dbc ();
    0x000436d2 movs r3, 0                                        |             r3 = 0;
    0x000436d4 str r3, [r4, 0xc]                                 |             *((r4 + 0xc)) = r3;
                                                                 |         }
    0x000436d6 ldr r2, [pc, 0x3c]                                |         
    0x000436d8 ldr r3, [pc, 0x34]                                |         r3 = *(0x43710);
    0x000436da add r2, pc                                        |         r2 = 0x86df4;
    0x000436dc ldr r3, [r2, r3]                                  |         r3 = *(0x86df4);
    0x000436de ldr r2, [r3]                                      |         r2 = *(0x86df4);
    0x000436e0 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x000436e2 eors r2, r3                                       |         r2 ^= r3;
    0x000436e4 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000436e8 bne 0x43706                                       |             goto label_10;
                                                                 |         }
    0x000436ea add sp, 0x28                                      |         
    0x000436ec pop {r4, pc}                                      |         
    0x000436ee movs r2, 0x20                                     |         r2 = 0x20;
    0x000436f0 add r1, sp, 4                                     |         r1 += var_4h_2;
    0x000436f2 blx 0x7a28                                        |         fcn_00007a28 ();
    0x000436f6 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x000436f8 blx 0x80f8                                        |         fcn_000080f8 ();
    0x000436fc ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x000436fe blx 0x82e0                                        |         fcn_000082e0 ();
    0x00043702 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x00043704 b 0x436b4                                         |         
                                                                 |     }
                                                                 | label_10:
    0x00043706 blx 0x7f7c                                        |     gmtime_r ();
    0x0004370a nop                                               |     
    0x0004370c strb r0, [r5, 8]                                  |     *((r5 + 8)) = r0;
    0x0004370e movs r2, r0                                       |     r2 = r0;
    0x00043710 lsls r4, r3, 0x1b                                 |     r4 = r3 << 0x1b;
    0x00043712 movs r0, r0                                       |     
    0x00043714 strb r2, [r4, 7]                                  |     *((r4 + 7)) = r2;
    0x00043716 movs r2, r0                                       |     r2 = r0;
    0x00043718 ldr r2, [pc, 0xc8]                                |     
    0x0004371a ldr r3, [pc, 0xcc]                                |     r3 = *(0x437ea);
    0x0004371c push {r4, r5, r6, r7, lr}                         |     
    0x0004371e mov r5, r1                                        |     r5 = r1;
    0x00043720 add r2, pc                                        |     r2 = 0x86f08;
    0x00043722 sub sp, 0x1c                                      |     
    0x00043724 movs r1, 0                                        |     r1 = 0;
    0x00043726 ldr r3, [r2, r3]                                  |     
    0x00043728 ldr r3, [r3]                                      |     r3 = *(0x86f08);
    0x0004372a str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0004372c mov.w r3, 0                                       |     r3 = 0;
    0x00043730 blx 0x83f8                                        |     r0 = fcn_000083f8 ();
                                                                 |     if (r0 != 0) {
    0x00043734 cbz r0, 0x43756                                   |         
    0x00043736 ldr r3, [r0, 8]                                   |         r3 = *((r0 + 8));
    0x00043738 mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r3 == 0) {
    0x0004373a cbz r3, 0x43756                                   |             goto label_11;
                                                                 |         }
    0x0004373c ldr r6, [r3, 0x1c]                                |         r6 = *((r3 + 0x1c));
                                                                 |         if (r6 == 0) {
    0x0004373e cbz r6, 0x43756                                   |             goto label_11;
                                                                 |         }
    0x00043740 bl 0x48890                                        |         fcn_00048890 (r0);
    0x00043744 mov r1, r6                                        |         r1 = r6;
    0x00043746 mov r7, r0                                        |         r7 = r0;
    0x00043748 mov r0, r4                                        |         r0 = r4;
    0x0004374a bl 0x488a8                                        |         fcn_000488a8 (r0, r1);
    0x0004374e ldrb.w r3, [r0, 0x39]                             |         r3 = *((r0 + 0x39));
    0x00043752 lsls r3, r3, 0x1c                                 |         r3 <<= 0x1c;
                                                                 |         if (r3 < r3) {
    0x00043754 bmi 0x43772                                       |             goto label_12;
                                                                 |         }
                                                                 |     }
                                                                 | label_11:
    0x00043756 movs r4, 0                                        |     r4 = 0;
                                                                 |     do {
    0x00043758 ldr r2, [pc, 0x90]                                |         
    0x0004375a ldr r3, [pc, 0x8c]                                |         r3 = *(0x437ea);
    0x0004375c add r2, pc                                        |         r2 = 0x86f4c;
    0x0004375e ldr r3, [r2, r3]                                  |         r3 = *(0x86f4c);
    0x00043760 ldr r2, [r3]                                      |         r2 = *(0x86f4c);
    0x00043762 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x00043764 eors r2, r3                                       |         r2 ^= r3;
    0x00043766 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0004376a bne 0x437de                                       |             goto label_13;
                                                                 |         }
    0x0004376c mov r0, r4                                        |         r0 = r4;
    0x0004376e add sp, 0x1c                                      |         
    0x00043770 pop {r4, r5, r6, r7, pc}                          |         
                                                                 | label_12:
    0x00043772 movs r3, 0                                        |         r3 = 0;
    0x00043774 mov r0, r6                                        |         r0 = r6;
    0x00043776 strb.w r3, [sp, 0xf]                              |         var_fh = r3;
    0x0004377a str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0004377c bl 0x47c44                                        |         fcn_00047c44 (r0);
                                                                 |         if (r7 == 0) {
    0x00043780 cbz r7, 0x437a2                                   |             goto label_14;
                                                                 |         }
                                                                 | label_1:
    0x00043782 add.w r1, sp, 0xf                                 |         r1 += var_fh;
    0x00043786 movs r3, 0                                        |         r3 = 0;
    0x00043788 str r1, [sp]                                      |         *(sp) = r1;
    0x0004378a mov r2, r5                                        |         r2 = r5;
    0x0004378c mov r0, r4                                        |         r0 = r4;
    0x0004378e mov r1, r6                                        |         r1 = r6;
    0x00043790 bl 0x47e3c                                        |         r0 = fcn_00047e3c (r0, r1, r2, r3, r4, r5, r6);
                                                                 |         if (r0 != 0) {
    0x00043794 cbnz r0, 0x437d0                                  |             goto label_15;
                                                                 |         }
    0x00043796 ldrb.w r4, [sp, 0xf]                              |         r4 = var_fh;
                                                                 | label_2:
    0x0004379a mov r0, r6                                        |         r0 = r6;
    0x0004379c bl 0x47c58                                        |         fcn_00047c58 (r0);
    0x000437a0 b 0x43758                                         |         
                                                                 |     } while (1);
                                                                 | label_14:
    0x000437a2 mov r3, r7                                        |     r3 = r7;
    0x000437a4 add r2, sp, 0x10                                  |     r2 += var_10h;
    0x000437a6 mov r1, r6                                        |     r1 = r6;
    0x000437a8 mov r0, r4                                        |     r0 = r4;
    0x000437aa bl 0x47c6c                                        |     r0 = fcn_00047c6c (r0, r1, r2, r3, r4, r5, r6);
    0x000437ae cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000437b0 bne 0x43782                                       |         goto label_1;
                                                                 |     }
    0x000437b2 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000437b4 cmp r3, r5                                        |     
    0x000437b6 it eq                                             |     
                                                                 |     if (r3 == r5) {
    0x000437b8 moveq r4, r0                                      |         r4 = r0;
                                                                 |         goto label_16;
                                                                 |     }
                                                                 |     if (r3 == r5) {
                                                                 | label_16:
    0x000437ba beq 0x4379a                                       |         goto label_2;
                                                                 |     }
    0x000437bc ldr r1, [pc, 0x30]                                |     
    0x000437be mov r0, r6                                        |     r0 = r6;
    0x000437c0 add r1, pc                                        |     r1 = 0x86fb4;
    0x000437c2 bl 0x10cc8                                        |     fcn_00010cc8 (r0);
    0x000437c6 ldr r1, [sp, 0x10]                                |     r1 = var_10h;
    0x000437c8 mov r0, r6                                        |     r0 = r6;
    0x000437ca bl 0x47e10                                        |     fcn_00047e10 (r0, r1);
    0x000437ce b 0x43782                                         |     goto label_1;
                                                                 | label_15:
    0x000437d0 ldr r1, [pc, 0x20]                                |     
    0x000437d2 mov r0, r6                                        |     r0 = r6;
    0x000437d4 movs r4, 0                                        |     r4 = 0;
    0x000437d6 add r1, pc                                        |     r1 = 0x86fce;
    0x000437d8 bl 0x10c20                                        |     fcn_00010c20 (r0, r1);
    0x000437dc b 0x4379a                                         |     goto label_2;
                                                                 | label_13:
    0x000437de blx 0x7f7c                                        |     gmtime_r ();
    0x000437e2 nop                                               |     
    0x000437e4 strb r4, [r3, 6]                                  |     *((r3 + 6)) = r4;
    0x000437e6 movs r2, r0                                       |     r2 = r0;
    0x000437e8 lsls r4, r3, 0x1b                                 |     r4 = r3 << 0x1b;
    0x000437ea movs r0, r0                                       |     
    0x000437ec strb r0, [r4, 5]                                  |     *((r4 + 5)) = r0;
    0x000437ee movs r2, r0                                       |     r2 = r0;
    0x000437f0 adds r3, 0x40                                     |     r3 += 0x40;
    0x000437f2 movs r1, r0                                       |     r1 = r0;
    0x000437f4 adds r3, 0x52                                     |     r3 += 0x52;
    0x000437f6 movs r1, r0                                       |     r1 = r0;
    0x000437f8 mov r0, r1                                        |     r0 = r1;
    0x000437fa b.w 0x43124                                       |     goto label_3;
                                                                 | }

[*] Function strcat used 1 times libcurl.so.4.8.0