[*] Binary protection state of libcurl.so

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


[*] Function strcat tear down of libcurl.so

    ; 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/libcurl.so @ 0x11734 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.Curl_protocol_connecting ()      | uint32_t Curl_protocol_connecting (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x00011734 subs r2, r0, 0                    |     r2 = r0 - 0;
    0x00011738 mov r3, r1                        |     r3 = r1;
                                                 |     if (r2 != r0) {
    0x0001173c beq 0x1175c                       |         
    0x00011740 ldr r2, [r2, 0x284]               |         r2 = *((r2 + 0x284));
    0x00011744 ldr r2, [r2, 0x18]                |         r2 = *((r2 + 0x18));
    0x00011748 cmp r2, 0                         |         
                                                 |         if (r2 == 0) {
    0x0001174c beq 0x1175c                       |             goto label_0;
                                                 |         }
    0x00011750 mov ip, 0                         |         
    0x00011754 strb ip, [r1]                     |         *(r1) = ip;
    0x00011758 bx r2                             |         return uint32_t (*r2)() ();
                                                 |     }
                                                 | label_0:
    0x0001175c mov r2, 1                         |     r2 = 1;
    0x00011760 strb r2, [r3]                     |     *(r3) = r2;
    0x00011764 mov r0, 0                         |     r0 = 0;
    0x00011768 bx lr                             |     return r0;
                                                 | }
    ; 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/libcurl.so @ 0x2aec8 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.mime_part_rewind ()                  | void mime_part_rewind (size_t size) {
                                                     |     int32_t var_0h;
                                                     |     int32_t var_ch;
                                                     |     r0 = size;
    0x0002aec8 push {r0, r1, r2, r4, r5, lr}         |     
    0x0002aecc ldr r2, [r0, 0x48]                    |     r2 = *((r0 + 0x48));
    0x0002aed0 mov r3, 0                             |     r3 = 0;
    0x0002aed4 tst r2, 2                             |     
    0x0002aed8 ldr r2, [r0, 0x4c]                    |     r2 = *((r0 + 0x4c));
                                                     |     if ((r2 & 2) != 0) {
    0x0002aedc moveq r5, r3                          |         r5 = r3;
                                                     |     }
                                                     |     if ((r2 & 2) == 0) {
    0x0002aee0 movne r5, 4                           |         r5 = 4;
                                                     |     }
    0x0002aee4 cmp r2, r5                            |     
    0x0002aee8 mov r4, r0                            |     r4 = r0;
    0x0002aeec str r3, [r0, 0x5c]                    |     *((r0 + 0x5c)) = r3;
    0x0002aef0 str r3, [r0, 0x60]                    |     *((r0 + 0x60)) = r3;
    0x0002aef4 str r3, [r0, 0x64]                    |     *((r0 + 0x64)) = r3;
                                                     |     if (r2 > r5) {
    0x0002aef8 bhi 0x2af14                           |         goto label_2;
                                                     |     }
                                                     | label_0:
    0x0002aefc mov r0, 0                             |     r0 = 0;
    0x0002af00 str r5, [r4, 0x4c]                    |     *((r4 + 0x4c)) = r5;
    0x0002af04 str r0, [r4, 0x50]                    |     *((r4 + 0x50)) = r0;
    0x0002af08 str r0, [r4, 0x54]                    |     *((r4 + 0x54)) = r0;
                                                     |     do {
                                                     | label_1:
    0x0002af0c add sp, sp, 0xc                       |         
    0x0002af10 pop {r4, r5, pc}                      |         
                                                     | label_2:
    0x0002af14 ldr r1, [r0, 0x18]                    |         r1 = *((r0 + 0x18));
    0x0002af18 cmp r1, 0                             |         
                                                     |         if (r1 == 0) {
    0x0002af1c beq 0x2af5c                           |             goto label_3;
                                                     |         }
    0x0002af20 str r3, [sp]                          |         *(sp) = r3;
    0x0002af24 mov r2, 0                             |         r2 = 0;
    0x0002af28 mov r3, 0                             |         r3 = 0;
    0x0002af2c ldr r0, [r0, 0x20]                    |         r0 = *((r0 + 0x20));
    0x0002af30 blx r1                                |         r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0002af34 cmn r0, 1                             |         
                                                     |         if (r0 == 1) {
    0x0002af38 beq 0x2af5c                           |             goto label_3;
                                                     |         }
                                                     |         if (r0 >= 1) {
    0x0002af3c blt 0x2af48                           |             
    0x0002af40 cmp r0, 2                             |             
                                                     |             if (r0 <= 2) {
    0x0002af44 ble 0x2af50                           |                 goto label_4;
                                                     |             }
                                                     |         }
    0x0002af48 mov r0, 1                             |         r0 = 1;
    0x0002af4c b 0x2af0c                             |         
                                                     |     } while (1);
                                                     | label_4:
    0x0002af50 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0002af54 beq 0x2aefc                           |         goto label_0;
                                                     |     }
    0x0002af58 b 0x2af0c                             |     goto label_1;
                                                     | label_3:
    0x0002af5c mov r0, 2                             |     r0 = 2;
    0x0002af60 b 0x2af0c                             |     goto label_1;
                                                     | }

[*] Function strcat used 1 times libcurl.so