[*] Binary protection state of libcrypto.so.1.1

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


[*] Function strcpy tear down of libcrypto.so.1.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/libcrypto.so.1.1 @ 0x6c030 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.BIO_accept ()                        | void BIO_accept (int32_t arg1, int32_t arg2) {
                                                     |     int32_t var_0h;
                                                     |     char * src;
                                                     |     int32_t var_78h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0006c030 push {r4, r5, r6, r7, r8, lr}         |     
    0x0006c034 sub sp, sp, 0x78                      |     
    0x0006c038 add r6, sp, 8                         |     r6 += src;
    0x0006c03c mov r4, r1                            |     r4 = r1;
    0x0006c040 mov r2, 0                             |     r2 = 0;
    0x0006c044 mov r1, r6                            |     r1 = r6;
    0x0006c048 bl 0x6c958                            |     r0 = BIO_accept_ex ();
    0x0006c04c cmn r0, 1                             |     
    0x0006c050 mov r5, r0                            |     r5 = r0;
                                                     |     if (r0 != 1) {
    0x0006c054 bne 0x6c0b8                           |         goto label_1;
                                                     |     }
    0x0006c058 bl 0x73258                            |     r0 = BIO_sock_should_retry ();
    0x0006c05c cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0006c060 mvnne r5, 1                           |         r5 = ~1;
                                                     |     }
                                                     |     if (r0 != 0) {
    0x0006c064 bne 0x6c0ac                           |         goto label_0;
                                                     |     }
    0x0006c068 bl 0x4f848                            |     errno_location ();
    0x0006c06c ldr r4, [pc, 0x144]                   |     r4 = *(0x6c1b4);
    0x0006c070 mov r3, 0xf6                          |     r3 = 0xf6;
    0x0006c074 add r4, pc, r4                        |     r4 = pc + r4;
    0x0006c078 str r3, [sp]                          |     *(sp) = r3;
    0x0006c07c mov r1, 8                             |     r1 = 8;
    0x0006c080 mov r3, r4                            |     r3 = r4;
    0x0006c084 ldr r2, [r0]                          |     r2 = *(r0);
    0x0006c088 mov r0, 2                             |     r0 = 2;
    0x0006c08c bl 0xfc7b8                            |     ERR_put_error ();
    0x0006c090 mov r3, 0xf7                          |     r3 = 0xf7;
    0x0006c094 str r3, [sp]                          |     *(sp) = r3;
    0x0006c098 mov r2, 0x64                          |     r2 = 0x64;
    0x0006c09c mov r3, r4                            |     r3 = r4;
    0x0006c0a0 mov r1, 0x65                          |     r1 = 0x65;
    0x0006c0a4 mov r0, 0x20                          |     r0 = 0x20;
    0x0006c0a8 bl 0xfc7b8                            |     ERR_put_error ();
                                                     |     do {
                                                     | label_0:
    0x0006c0ac mov r0, r5                            |         r0 = r5;
    0x0006c0b0 add sp, sp, 0x78                      |         
    0x0006c0b4 pop {r4, r5, r6, r7, r8, pc}          |         
                                                     | label_1:
    0x0006c0b8 cmp r4, 0                             |         
    0x0006c0bc beq 0x6c0ac                           |         
                                                     |     } while (r4 == 0);
    0x0006c0c0 mov r1, 1                             |     r1 = 1;
    0x0006c0c4 mov r0, r6                            |     r0 = r6;
    0x0006c0c8 bl 0x69c48                            |     BIO_ADDR_hostname_string ();
    0x0006c0cc mov r1, 1                             |     r1 = 1;
    0x0006c0d0 mov r7, r0                            |     r7 = r0;
    0x0006c0d4 mov r0, r6                            |     r0 = r6;
    0x0006c0d8 bl 0x69bf8                            |     BIO_ADDR_service_string ();
    0x0006c0dc adds r3, r0, 0                        |     r3 += src;
                                                     |     if (r3 == src) {
    0x0006c0e0 movne r3, 1                           |         r3 = 1;
                                                     |     }
    0x0006c0e4 cmp r7, 0                             |     
                                                     |     if (r7 != 0) {
    0x0006c0e8 moveq r3, 0                           |         r3 = 0;
                                                     |     }
    0x0006c0ec cmp r3, 0                             |     
    0x0006c0f0 mov r6, r0                            |     r6 = r0;
                                                     |     if (r3 != 0) {
    0x0006c0f4 streq r3, [r4]                        |         *(r4) = r3;
                                                     |     }
                                                     |     if (r3 != 0) {
    0x0006c0f8 beq 0x6c12c                           |         
    0x0006c0fc mov r0, r7                            |         r0 = r7;
    0x0006c100 bl 0x4f7b8                            |         r0 = strlen (r0);
    0x0006c104 mov r8, r0                            |         r8 = r0;
    0x0006c108 mov r0, r6                            |         r0 = r6;
    0x0006c10c bl 0x4f7b8                            |         strlen (r0);
    0x0006c110 ldr r1, [pc, 0xa4]                    |         r1 = *(0x6c1b8);
    0x0006c114 mov r2, 0xff                          |         r2 = 0xff;
    0x0006c118 add r1, pc, r1                        |         r1 = pc + r1;
    0x0006c11c add r0, r8, r0                        |         r0 = r8 + r0;
    0x0006c120 add r0, r0, 2                         |         r0 += 2;
    0x0006c124 bl 0x118644                           |         CRYPTO_zalloc ();
    0x0006c128 str r0, [r4]                          |         *(r4) = r0;
                                                     |     }
    0x0006c12c ldr r0, [r4]                          |     r0 = *(r4);
    0x0006c130 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x0006c134 bne 0x6c190                           |         goto label_2;
                                                     |     }
    0x0006c138 mov r3, 0x104                         |     r3 = 0x104;
    0x0006c13c str r3, [sp]                          |     *(sp) = r3;
    0x0006c140 ldr r3, [pc, 0x78]                    |     r3 = *(0x6c1bc);
    0x0006c144 mov r2, 0x41                          |     r2 = 0x41;
    0x0006c148 add r3, pc, r3                        |     r3 = pc + r3;
    0x0006c14c mov r1, 0x65                          |     r1 = 0x65;
    0x0006c150 mov r0, 0x20                          |     r0 = 0x20;
    0x0006c154 bl 0xfc7b8                            |     ERR_put_error ();
    0x0006c158 mov r0, r5                            |     r0 = r5;
    0x0006c15c bl 0x6ca28                            |     BIO_closesocket ();
    0x0006c160 mvn r5, 0                             |     r5 = ~0;
                                                     |     do {
    0x0006c164 ldr r4, [pc, 0x58]                    |         r4 = *(0x6c1c0);
    0x0006c168 mov r0, r7                            |         r0 = r7;
    0x0006c16c add r4, pc, r4                        |         r4 = pc + r4;
    0x0006c170 mov r1, r4                            |         r1 = r4;
    0x0006c174 mov r2, 0x10c                         |         r2 = 0x10c;
    0x0006c178 bl 0x11842c                           |         CRYPTO_free ();
    0x0006c17c ldr r2, [pc, 0x44]                    |         r2 = *(0x6c1c4);
    0x0006c180 mov r1, r4                            |         r1 = r4;
    0x0006c184 mov r0, r6                            |         r0 = r6;
    0x0006c188 bl 0x11842c                           |         CRYPTO_free ();
    0x0006c18c b 0x6c0ac                             |         goto label_0;
                                                     | label_2:
    0x0006c190 mov r1, r7                            |         r1 = r7;
    0x0006c194 bl 0x4f518                            |         strcpy (r0, r1)
    0x0006c198 ldr r1, [pc, 0x2c]                    |         r1 = *(0x6c1c8);
    0x0006c19c ldr r0, [r4]                          |         r0 = *(r4);
    0x0006c1a0 add r1, pc, r1                        |         r1 = pc + r1;
    0x0006c1a4 bl 0x4f560                            |         strcat (r0, r1);
    0x0006c1a8 mov r1, r6                            |         r1 = r6;
    0x0006c1ac ldr r0, [r4]                          |         r0 = *(r4);
    0x0006c1b0 bl 0x4f560                            |         strcat (r0, r1);
    0x0006c1b4 b 0x6c164                             |         
                                                     |     } 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/libcrypto.so.1.1 @ 0x6c958 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.BIO_accept_ex ()             | void BIO_accept_ex (int32_t arg1, int32_t arg2) {
                                             |     int32_t var_0h;
                                             |     int32_t var_74h;
                                             |     int32_t var_10h;
                                             |     int32_t var_80h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x0006c958 push {r4, r5, r6, lr}         |     
    0x0006c95c mov r6, r0                    |     r6 = r0;
    0x0006c960 sub sp, sp, 0x80              |     
    0x0006c964 subs r0, r1, 0                |     r0 = r1 - 0;
                                             |     if (r0 != r1) {
    0x0006c968 addeq r0, sp, 0x10            |         r0 += var_10h;
                                             |     }
    0x0006c96c add r4, sp, 0x80              |     r4 += var_80h;
    0x0006c970 mov r3, 0x70                  |     r3 = 0x70;
    0x0006c974 str r3, [r4, -0x74]!          |     *((r4 -= 0x74)) = r3;
    0x0006c978 mov r5, r2                    |     r5 = r2;
    0x0006c97c bl 0x69938                    |     fcn_00069938 ();
    0x0006c980 mov r2, r4                    |     r2 = r4;
    0x0006c984 mov r1, r0                    |     r1 = r0;
    0x0006c988 mov r0, r6                    |     r0 = r6;
    0x0006c98c bl 0x4f458                    |     r0 = accept (r0, r1, r2);
    0x0006c990 cmn r0, 1                     |     
    0x0006c994 mov r4, r0                    |     r4 = r0;
                                             |     if (r0 != 1) {
    0x0006c998 bne 0x6c9f8                   |         goto label_1;
                                             |     }
    0x0006c99c bl 0x73258                    |     r0 = BIO_sock_should_retry ();
    0x0006c9a0 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0006c9a4 bne 0x6c9ec                   |         goto label_0;
                                             |     }
    0x0006c9a8 bl 0x4f848                    |     errno_location ();
    0x0006c9ac ldr r5, [pc, 0x68]            |     r5 = *(0x6ca18);
    0x0006c9b0 ldr r3, [pc, 0x68]            |     r3 = *(0x6ca1c);
    0x0006c9b4 add r5, pc, r5                |     r5 = pc + r5;
    0x0006c9b8 str r3, [sp]                  |     *(sp) = r3;
    0x0006c9bc mov r1, 8                     |     r1 = 8;
    0x0006c9c0 mov r3, r5                    |     r3 = r5;
    0x0006c9c4 ldr r2, [r0]                  |     r2 = *(r0);
    0x0006c9c8 mov r0, 2                     |     r0 = 2;
    0x0006c9cc bl 0xfc7b8                    |     ERR_put_error ();
    0x0006c9d0 ldr r3, [pc, 0x4c]            |     r3 = *(0x6ca20);
    0x0006c9d4 mov r2, 0x64                  |     r2 = 0x64;
    0x0006c9d8 str r3, [sp]                  |     *(sp) = r3;
    0x0006c9dc mov r1, 0x89                  |     r1 = 0x89;
    0x0006c9e0 mov r3, r5                    |     r3 = r5;
    0x0006c9e4 mov r0, 0x20                  |     r0 = 0x20;
    0x0006c9e8 bl 0xfc7b8                    |     ERR_put_error ();
                                             |     do {
                                             | label_0:
    0x0006c9ec mov r0, r4                    |         r0 = r4;
    0x0006c9f0 add sp, sp, 0x80              |         
    0x0006c9f4 pop {r4, r5, r6, pc}          |         
                                             | label_1:
    0x0006c9f8 lsr r1, r5, 3                 |         r1 = r5 >> 3;
    0x0006c9fc and r1, r1, 1                 |         r1 &= 1;
    0x0006ca00 bl 0x6c200                    |         r0 = BIO_socket_nbio ();
    0x0006ca04 cmp r0, 0                     |         
    0x0006ca08 bne 0x6c9ec                   |         
                                             |     } while (r0 != 0);
    0x0006ca0c mov r0, r4                    |     r0 = r4;
    0x0006ca10 bl 0x4f320                    |     close (r0);
    0x0006ca14 mvn r4, 0                     |     r4 = ~0;
    0x0006ca18 b 0x6c9ec                     |     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/libcrypto.so.1.1 @ 0x6a258 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.BIO_dump_indent_cb ()                            | void BIO_dump_indent_cb (int32_t arg_178h, int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     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_24h;
                                                                 |     char * dest;
                                                                 |     int8_t var_124h;
                                                                 |     int32_t var_150h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_154h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0006a258 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0006a25c sub sp, sp, 0x154                                 |     
    0x0006a260 mov sl, r3                                        |     sl = r3;
    0x0006a264 ldr r3, [sp, 0x178]                               |     r3 = *(arg_178h);
    0x0006a268 str r0, [sp, 0x18]                                |     var_18h = r0;
    0x0006a26c cmp r3, 0x80                                      |     
                                                                 |     if (r3 < 0x80) {
    0x0006a270 movge r3, 0x80                                    |         r3 = 0x80;
                                                                 |     }
    0x0006a274 bic r3, r3, r3, asr 31                            |     r3 = BIT_MASK (r3, r3);
    0x0006a278 cmp r3, 6                                         |     
    0x0006a27c str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     if (r3 > 6) {
    0x0006a280 suble r3, r3, r3                                  |         r3 -= r3;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x0006a284 subgt r3, r3, 6                                   |         r3 -= 6;
                                                                 |     }
    0x0006a288 adds r5, r3, 3                                    |     r5 = r3 + 3;
                                                                 |     if (r5 >= r3) {
    0x0006a28c addmi r5, r3, 6                                   |         r5 = r3 + 6;
                                                                 |     }
    0x0006a290 asr r5, r5, 2                                     |     r5 >>= 2;
    0x0006a294 rsb r5, r5, 0x10                                  |     r5 = 0x10 - r5;
    0x0006a298 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x0006a29c mov r0, sl                                        |     r0 = sl;
    0x0006a2a0 mov r1, r5                                        |     r1 = r5;
    0x0006a2a4 mov r7, r2                                        |     r7 = r2;
    0x0006a2a8 bl 0x18317c                                       |     fcn_0018317c (r0, r1);
    0x0006a2ac mov r6, 0                                         |     r6 = 0;
    0x0006a2b0 mov fp, r6                                        |     
    0x0006a2b4 str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x0006a2b8 mul r3, r0, r5                                    |     r3 = r0 * r5;
    0x0006a2bc mov sb, r0                                        |     sb = r0;
    0x0006a2c0 cmp r3, sl                                        |     
    0x0006a2c4 ldr r3, [pc, 0x1a8]                               |     r3 = *(0x6a470);
                                                                 |     if (r3 >= sl) {
    0x0006a2c8 addlt sb, r0, 1                                   |         sb = r0 + 1;
                                                                 |     }
    0x0006a2cc add r3, pc, r3                                    |     r3 = pc + r3;
    0x0006a2d0 str r3, [sp, 0x24]                                |     var_24h = r3;
                                                                 | label_1:
    0x0006a2d4 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0006a2d8 cmp r3, sb                                        |     
                                                                 |     if (r3 >= sb) {
    0x0006a2dc blt 0x6a2ec                                       |         
    0x0006a2e0 mov r0, fp                                        |         r0 = fp;
    0x0006a2e4 add sp, sp, 0x154                                 |         
    0x0006a2e8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 |     }
    0x0006a2ec add r3, sp, 0x2c                                  |     r3 += dest;
    0x0006a2f0 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0006a2f4 ldr r3, [pc, 0x17c]                               |     r3 = *(0x6a474);
    0x0006a2f8 str r6, [sp, 4]                                   |     var_4h = r6;
    0x0006a2fc add r3, pc, r3                                    |     r3 = pc + r3;
    0x0006a300 str r3, [sp]                                      |     *(sp) = r3;
    0x0006a304 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x0006a308 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0006a30c ldr r1, [pc, 0x168]                               |     r1 = *(0x6a478);
    0x0006a310 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x0006a314 bl 0x6bc48                                        |     BIO_snprintf ();
    0x0006a318 ldr r3, [pc, 0x160]                               |     r3 = *(0x6a47c);
    0x0006a31c mov r8, 0                                         |     r8 = 0;
    0x0006a320 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0006a324 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x0006a328 mov r4, r0                                        |     r4 = r0;
                                                                 |     do {
    0x0006a32c rsb r3, r4, 0x120                                 |         r3 = 0x120 - r4;
    0x0006a330 cmp r8, r5                                        |         
    0x0006a334 add r3, r3, 1                                     |         r3++;
                                                                 |         if (r8 >= r5) {
    0x0006a338 blt 0x6a368                                       |             
    0x0006a33c cmp r3, 2                                         |             
                                                                 |             if (r3 >= 2) {
    0x0006a340 bls 0x6a35c                                       |                 
    0x0006a344 ldr r1, [pc, 0x138]                               |                 r1 = *(0x6a480);
    0x0006a348 add r0, sp, 0x2c                                  |                 r0 += dest;
    0x0006a34c add r0, r0, r4                                    |                 r0 += r4;
    0x0006a350 add r1, pc, r1                                    |                 r1 = pc + r1;
    0x0006a354 bl 0x4f518                                        |                 strcpy (r0, r1)
    0x0006a358 add r4, r4, 2                                     |                 r4 += 2;
                                                                 |             }
    0x0006a35c mov r3, 0                                         |             r3 = 0;
    0x0006a360 mov r0, r3                                        |             r0 = r3;
    0x0006a364 b 0x6a404                                         |             goto label_2;
                                                                 |         }
    0x0006a368 cmp r3, 3                                         |         
                                                                 |         if (r3 >= 3) {
    0x0006a36c bls 0x6a394                                       |             
    0x0006a370 add r3, r8, r6                                    |             r3 = r8 + r6;
    0x0006a374 add r0, sp, 0x2c                                  |             r0 += dest;
    0x0006a378 cmp sl, r3                                        |             
    0x0006a37c add r0, r0, r4                                    |             r0 += r4;
                                                                 |             if (sl > r3) {
    0x0006a380 bgt 0x6a39c                                       |                 goto label_3;
                                                                 |             }
    0x0006a384 ldr r1, [pc, 0xfc]                                |             r1 = "EVP_CIPHER_CTX_iv";
    0x0006a388 add r1, pc, r1                                    |             r1 = pc + r1;
    0x0006a38c bl 0x4f518                                        |             strcpy (r0, "EVP_CIPHER_CTX_iv")
                                                                 | label_0:
    0x0006a390 add r4, r4, 3                                     |             r4 += 3;
                                                                 |         }
    0x0006a394 add r8, r8, 1                                     |         r8++;
    0x0006a398 b 0x6a32c                                         |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x0006a39c cmp r8, 7                                         |     
                                                                 |     if (r8 == 7) {
    0x0006a3a0 movne r2, 0x20                                    |         r2 = 0x20;
                                                                 |     }
                                                                 |     if (r8 != 7) {
    0x0006a3a4 moveq r2, 0x2d                                    |         r2 = 0x2d;
                                                                 |     }
    0x0006a3a8 ldrb r3, [r7, r8]                                 |     r3 = *((r7 + r8));
    0x0006a3ac mov r1, 4                                         |     r1 = 4;
    0x0006a3b0 str r2, [sp]                                      |     *(sp) = r2;
    0x0006a3b4 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x0006a3b8 bl 0x6bc48                                        |     BIO_snprintf ();
    0x0006a3bc b 0x6a390                                         |     goto label_0;
                                                                 |     do {
    0x0006a3c0 add r1, r3, r6                                    |         r1 = r3 + r6;
    0x0006a3c4 cmp r1, sl                                        |         
                                                                 |         if (r1 >= sl) {
    0x0006a3c8 bge 0x6a414                                       |             goto label_4;
                                                                 |         }
    0x0006a3cc cmp r2, 1                                         |         
                                                                 |         if (r2 >= 1) {
    0x0006a3d0 bls 0x6a400                                       |             
    0x0006a3d4 ldrb r2, [r7, r3]                                 |             r2 = *((r7 + r3));
    0x0006a3d8 add ip, sp, 0x150                                 |             
    0x0006a3dc sub r1, r2, 0x20                                  |             r1 = r2 - 0x20;
    0x0006a3e0 cmp r1, 0x5e                                      |             
                                                                 |             if (r1 <= 0x5e) {
    0x0006a3e4 movhi r2, 0x2e                                    |                 r2 = 0x2e;
                                                                 |             }
    0x0006a3e8 add r1, r4, 1                                     |             r1 = r4 + 1;
    0x0006a3ec add r4, ip, r4                                    |             r4 = ip + r4;
    0x0006a3f0 strb r2, [r4, -0x124]                             |             dest = r2;
    0x0006a3f4 add r2, ip, r1                                    |             r2 = ip + r1;
    0x0006a3f8 mov r4, r1                                        |             r4 = r1;
    0x0006a3fc strb r0, [r2, -0x124]                             |             var_124h = r0;
                                                                 |         }
    0x0006a400 add r3, r3, 1                                     |         r3++;
                                                                 | label_2:
    0x0006a404 rsb r2, r4, 0x120                                 |         r2 = 0x120 - r4;
    0x0006a408 cmp r3, r5                                        |         
    0x0006a40c add r2, r2, 1                                     |         r2++;
    0x0006a410 blt 0x6a3c0                                       |         
                                                                 |     } while (r3 < r5);
                                                                 | label_4:
    0x0006a414 cmp r2, 1                                         |     
                                                                 |     if (r2 >= 1) {
    0x0006a418 bls 0x6a444                                       |         
    0x0006a41c add r2, sp, 0x150                                 |         r2 += var_150h;
    0x0006a420 add r3, r4, 1                                     |         r3 = r4 + 1;
    0x0006a424 add r4, r2, r4                                    |         r4 = r2 + r4;
    0x0006a428 mov r2, 0xa                                       |         r2 = 0xa;
    0x0006a42c strb r2, [r4, -0x124]                             |         dest = r2;
    0x0006a430 add r2, sp, 0x150                                 |         r2 += var_150h;
    0x0006a434 add r2, r2, r3                                    |         r2 += r3;
    0x0006a438 mov r1, 0                                         |         r1 = 0;
    0x0006a43c mov r4, r3                                        |         r4 = r3;
    0x0006a440 strb r1, [r2, -0x124]                             |         var_124h = r1;
                                                                 |     }
    0x0006a444 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0006a448 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0006a44c mov r1, r4                                        |     r1 = r4;
    0x0006a450 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x0006a454 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0006a458 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0006a45c add r6, r6, r5                                    |     r6 += r5;
    0x0006a460 add r3, r3, 1                                     |     r3++;
    0x0006a464 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0006a468 add r7, r7, r5                                    |     r7 += r5;
    0x0006a46c add fp, fp, r0                                    |     
    0x0006a470 b 0x6a2d4                                         |     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/libcrypto.so.1.1 @ 0x11ef9c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.CRYPTO_strdup ()                     | void CRYPTO_strdup (uint32_t arg1, int32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0011ef9c push {r4, r5, r6, r7, r8, lr}         |     
    0x0011efa0 subs r4, r0, 0                        |     r4 = r0 - 0;
                                                     |     if (r4 != r0) {
    0x0011efa4 beq 0x11efd8                          |         
    0x0011efa8 mov r6, r2                            |         r6 = r2;
    0x0011efac mov r5, r1                            |         r5 = r1;
    0x0011efb0 bl 0x4f7b8                            |         strlen (r0);
    0x0011efb4 mov r2, r6                            |         r2 = r6;
    0x0011efb8 mov r1, r5                            |         r1 = r5;
    0x0011efbc mov r7, r4                            |         r7 = r4;
    0x0011efc0 add r0, r0, 1                         |         r0++;
    0x0011efc4 bl 0x118474                           |         r0 = CRYPTO_malloc ();
    0x0011efc8 subs r4, r0, 0                        |         r4 = r0 - 0;
                                                     |         if (r4 == r0) {
    0x0011efcc beq 0x11efd8                          |             goto label_0;
                                                     |         }
    0x0011efd0 mov r1, r7                            |         r1 = r7;
    0x0011efd4 bl 0x4f518                            |         strcpy (r0, r1)
                                                     |     }
                                                     | label_0:
    0x0011efd8 mov r0, r4                            |     r0 = r4;
    0x0011efdc 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/libcrypto.so.1.1 @ 0xf7904 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.ENGINE_ctrl ()                                       | void ENGINE_ctrl (int32_t arg_28h, int32_t arg1, int32_t arg2) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_8h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x000f7904 push {r0, r1, r4, r5, r6, r7, r8, sb, sl, lr}         |     
    0x000f7908 ldr sl, [sp, 0x28]                                    |     sl = *(arg_28h);
    0x000f790c mov r7, r3                                            |     r7 = r3;
    0x000f7910 ldr r3, [pc, 0x2f8]                                   |     r3 = *(0xf7c0c);
    0x000f7914 subs r6, r0, 0                                        |     r6 -= arg_28h;
    0x000f7918 add r3, pc, r3                                        |     r3 = pc + r3;
                                                                     |     if (r6 != arg_28h) {
    0x000f791c bne 0xf7950                                           |         goto label_9;
                                                                     |     }
    0x000f7920 mov r3, 0x81                                          |     r3 = 0x81;
    0x000f7924 str r3, [sp]                                          |     *(sp) = r3;
    0x000f7928 ldr r3, [pc, 0x2e4]                                   |     r3 = *(0xf7c10);
    0x000f792c mov r2, 0x43                                          |     r2 = 0x43;
    0x000f7930 add r3, pc, r3                                        |     r3 = pc + r3;
                                                                     |     do {
                                                                     | label_0:
    0x000f7934 mov r1, 0x8e                                          |         r1 = 0x8e;
    0x000f7938 mov r0, 0x26                                          |         r0 = 0x26;
    0x000f793c bl 0xfc7b8                                            |         ERR_put_error ();
    0x000f7940 mov r4, 0                                             |         r4 = 0;
                                                                     | label_1:
    0x000f7944 mov r0, r4                                            |         r0 = r4;
    0x000f7948 add sp, sp, 8                                         |         
    0x000f794c pop {r4, r5, r6, r7, r8, sb, sl, pc}                  |         
                                                                     | label_9:
    0x000f7950 mov sb, r2                                            |         sb = r2;
    0x000f7954 ldr r2, [pc, 0x2bc]                                   |         r2 = *(0xf7c14);
    0x000f7958 mov r5, r1                                            |         r5 = r1;
    0x000f795c ldr r4, [r3, r2]                                      |         r4 = *((r3 + r2));
    0x000f7960 ldr r0, [r4]                                          |         r0 = *(r4);
    0x000f7964 bl 0x157760                                           |         CRYPTO_THREAD_write_lock ();
    0x000f7968 bl 0x184c84                                           |         fcn_00184c84 ();
    0x000f796c ldr r8, [r6, 0x50]                                    |         r8 = *((r6 + 0x50));
    0x000f7970 bl 0x184c84                                           |         fcn_00184c84 ();
    0x000f7974 ldr r0, [r4]                                          |         r0 = *(r4);
    0x000f7978 bl 0x157774                                           |         CRYPTO_THREAD_unlock ();
    0x000f797c cmp r8, 0                                             |         
                                                                     |         if (r8 > 0) {
    0x000f7980 bgt 0xf799c                                           |             goto label_10;
                                                                     |         }
    0x000f7984 mov r3, 0x89                                          |         r3 = 0x89;
    0x000f7988 str r3, [sp]                                          |         *(sp) = r3;
    0x000f798c ldr r3, [pc, 0x288]                                   |         r3 = *(0xf7c18);
    0x000f7990 mov r2, 0x82                                          |         r2 = 0x82;
    0x000f7994 add r3, pc, r3                                        |         r3 = pc + r3;
    0x000f7998 b 0xf7934                                             |         
                                                                     |     } while (1);
                                                                     | label_10:
    0x000f799c cmp r5, 0xa                                           |     
    0x000f79a0 ldr r8, [r6, 0x38]                                    |     r8 = *((r6 + 0x38));
                                                                     |     if (r5 != 0xa) {
    0x000f79a4 beq 0xf79d4                                           |         
                                                                     |         if (r5 >= 0xa) {
    0x000f79a8 blt 0xf79b4                                           |             
    0x000f79ac cmp r5, 0x12                                          |             
                                                                     |             if (r5 <= 0x12) {
    0x000f79b0 ble 0xf79e0                                           |                 goto label_11;
                                                                     |             }
                                                                     |         }
    0x000f79b4 cmp r8, 0                                             |         
                                                                     |         if (r8 != 0) {
    0x000f79b8 bne 0xf7bec                                           |             goto label_12;
                                                                     |         }
    0x000f79bc mov r3, 0xab                                          |         r3 = 0xab;
    0x000f79c0 str r3, [sp]                                          |         *(sp) = r3;
    0x000f79c4 ldr r3, [pc, 0x254]                                   |         r3 = *(0xf7c1c);
    0x000f79c8 mov r2, 0x78                                          |         r2 = 0x78;
    0x000f79cc add r3, pc, r3                                        |         r3 = pc + r3;
    0x000f79d0 b 0xf7934                                             |         goto label_0;
                                                                     |     }
    0x000f79d4 adds r4, r8, 0                                        |     r4 = r8 + 0;
                                                                     |     if (r4 == r8) {
    0x000f79d8 movne r4, 1                                           |         r4 = 1;
                                                                     |     }
    0x000f79dc b 0xf7944                                             |     goto label_1;
                                                                     | label_11:
    0x000f79e0 cmp r8, 0                                             |     
                                                                     |     if (r8 == 0) {
    0x000f79e4 beq 0xf7bd0                                           |         goto label_13;
                                                                     |     }
    0x000f79e8 ldr r4, [r6, 0x4c]                                    |     r4 = *((r6 + 0x4c));
    0x000f79ec ands r4, r4, 2                                        |     r4 &= 2;
                                                                     |     if (r4 != r4) {
    0x000f79f0 bne 0xf7bec                                           |         goto label_12;
                                                                     |     }
    0x000f79f4 cmp r5, 0xb                                           |     
                                                                     |     if (r5 != 0xb) {
    0x000f79f8 bne 0xf7a24                                           |         goto label_14;
                                                                     |     }
    0x000f79fc ldr r3, [r6, 0x48]                                    |     r3 = *((r6 + 0x48));
    0x000f7a00 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000f7a04 beq 0xf7944                                           |         goto label_1;
                                                                     |     }
    0x000f7a08 ldr r2, [r3]                                          |     r2 = *(r3);
    0x000f7a0c cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x000f7a10 beq 0xf7944                                           |         goto label_1;
                                                                     |     }
    0x000f7a14 ldr r3, [r3, 4]                                       |     r3 = *((r3 + 4));
    0x000f7a18 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000f7a1c movne r4, r2                                          |         r4 = r2;
                                                                     |     }
    0x000f7a20 b 0xf7944                                             |     goto label_1;
                                                                     | label_14:
    0x000f7a24 bic r3, r5, 2                                         |     r3 = BIT_MASK (r5, 2);
    0x000f7a28 cmp r5, 0x11                                          |     
    0x000f7a2c cmpne r3, 0xd                                         |     __asm ("cmpne r3, 0xd");
                                                                     |     if (r5 != 0x11) {
    0x000f7a30 bne 0xf7a64                                           |         goto label_15;
                                                                     |     }
    0x000f7a34 cmp r7, 0                                             |     
                                                                     |     if (r7 != 0) {
    0x000f7a38 bne 0xf7a64                                           |         goto label_15;
                                                                     |     }
    0x000f7a3c mov r3, 0x4f                                          |     r3 = 0x4f;
    0x000f7a40 str r3, [sp]                                          |     *(sp) = r3;
    0x000f7a44 ldr r3, [pc, 0x1d8]                                   |     r3 = *(0xf7c20);
    0x000f7a48 mov r2, 0x43                                          |     r2 = 0x43;
    0x000f7a4c add r3, pc, r3                                        |     r3 = pc + r3;
                                                                     |     do {
                                                                     | label_4:
    0x000f7a50 mov r1, 0xac                                          |         r1 = 0xac;
                                                                     | label_8:
    0x000f7a54 mov r0, 0x26                                          |         r0 = 0x26;
    0x000f7a58 bl 0xfc7b8                                            |         ERR_put_error ();
    0x000f7a5c mvn r4, 0                                             |         r4 = ~0;
    0x000f7a60 b 0xf7944                                             |         goto label_1;
                                                                     | label_15:
    0x000f7a64 cmp r5, 0xd                                           |         
    0x000f7a68 ldr r6, [r6, 0x48]                                    |         r6 = *((r6 + 0x48));
                                                                     |         if (r5 != 0xd) {
    0x000f7a6c bne 0xf7ac8                                           |             goto label_16;
                                                                     |         }
    0x000f7a70 cmp r6, 0                                             |         
                                                                     |         if (r6 != 0) {
    0x000f7a74 bne 0xf7a94                                           |             goto label_17;
                                                                     |         }
                                                                     | label_2:
    0x000f7a78 mov r3, 0x57                                          |         r3 = 0x57;
    0x000f7a7c str r3, [sp]                                          |         *(sp) = r3;
    0x000f7a80 ldr r3, [pc, 0x1a0]                                   |         r3 = *(0xf7c24);
    0x000f7a84 mov r2, 0x89                                          |         r2 = 0x89;
    0x000f7a88 add r3, pc, r3                                        |         r3 = pc + r3;
    0x000f7a8c b 0xf7a50                                             |         
                                                                     |     } while (1);
                                                                     | label_3:
    0x000f7a90 add r4, r4, 1                                         |     r4++;
                                                                     | label_17:
    0x000f7a94 ldr r3, [r6, r4, lsl 4]                               |     offset_0 = r4 << 4;
                                                                     |     r3 = *((r6 + offset_0));
    0x000f7a98 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000f7a9c beq 0xf7a78                                           |         goto label_2;
                                                                     |     }
    0x000f7aa0 add r5, r6, r4, lsl 4                                 |     r5 = r6 + (r4 << 4);
    0x000f7aa4 ldr r0, [r5, 4]                                       |     r0 = *((r5 + 4));
    0x000f7aa8 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x000f7aac beq 0xf7a78                                           |         goto label_2;
                                                                     |     }
    0x000f7ab0 mov r1, r7                                            |     r1 = r7;
    0x000f7ab4 bl 0x4f86c                                            |     r0 = strcmp (r0, r1);
    0x000f7ab8 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x000f7abc bne 0xf7a90                                           |         goto label_3;
                                                                     |     }
    0x000f7ac0 ldr r4, [r5]                                          |     r4 = *(r5);
    0x000f7ac4 b 0xf7944                                             |     goto label_1;
                                                                     | label_16:
    0x000f7ac8 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x000f7acc movne r0, 0                                           |         r0 = 0;
                                                                     |     }
                                                                     |     if (r6 != 0) {
    0x000f7ad0 bne 0xf7af0                                           |         goto label_18;
                                                                     |     }
                                                                     | label_5:
    0x000f7ad4 mov r3, 0x62                                          |     r3 = 0x62;
    0x000f7ad8 str r3, [sp]                                          |     *(sp) = r3;
    0x000f7adc ldr r3, [pc, 0x148]                                   |     r3 = *(0xf7c28);
    0x000f7ae0 mov r2, 0x8a                                          |     r2 = 0x8a;
    0x000f7ae4 add r3, pc, r3                                        |     r3 = pc + r3;
    0x000f7ae8 b 0xf7a50                                             |     goto label_4;
                                                                     |     do {
    0x000f7aec add r0, r0, 1                                         |         r0++;
                                                                     | label_18:
    0x000f7af0 ldr r3, [r6, r0, lsl 4]                               |         offset_1 = r0 << 4;
                                                                     |         r3 = *((r6 + offset_1));
    0x000f7af4 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x000f7af8 beq 0xf7b10                                           |             goto label_19;
                                                                     |         }
    0x000f7afc add r2, r6, r0, lsl 4                                 |         r2 = r6 + (r0 << 4);
    0x000f7b00 ldr r2, [r2, 4]                                       |         r2 = *((r2 + 4));
    0x000f7b04 cmp r2, 0                                             |         
    0x000f7b08 cmpne sb, r3                                          |         __asm ("cmpne sb, r3");
    0x000f7b0c bhi 0xf7aec                                           |         
                                                                     |     } while (r2 > 0);
                                                                     | label_19:
    0x000f7b10 cmp sb, r3                                            |     
                                                                     |     if (sb != r3) {
    0x000f7b14 bne 0xf7ad4                                           |         goto label_5;
                                                                     |     }
    0x000f7b18 sub r5, r5, 0xc                                       |     r5 -= 0xc;
    0x000f7b1c add r2, r6, r0, lsl 4                                 |     r2 = r6 + (r0 << 4);
    0x000f7b20 cmp r5, 6                                             |     
                                                                     |     if (r5 > 6) {
                                                                     |         /* switch table (7 cases) at 0xf7b2c */
    0x000f7b24 addls pc, pc, r5, lsl 2                               |         pc += (r5 << 2);
                                                                     |     }
    0x000f7b28 b 0xf7bb8                                             |     goto label_20;
    0x000f7b2c b 0xf7b48                                             |     goto label_21;
    0x000f7b30 b 0xf7bb8                                             |     goto label_20;
    0x000f7b34 b 0xf7b64                                             |     goto label_22;
    0x000f7b38 b 0xf7b74                                             |     goto label_23;
    0x000f7b3c b 0xf7b88                                             |     goto label_24;
    0x000f7b40 b 0xf7b9c                                             |     goto label_25;
    0x000f7b44 b 0xf7bb0                                             |     goto label_26;
                                                                     | label_21:
    0x000f7b48 ldr r3, [r2, 0x10]                                    |     r3 = *((r2 + 0x10));
    0x000f7b4c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000f7b50 beq 0xf7944                                           |         goto label_1;
                                                                     |     }
    0x000f7b54 ldr r2, [r2, 0x14]                                    |     r2 = *((r2 + 0x14));
    0x000f7b58 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x000f7b5c movne r4, r3                                          |         r4 = r3;
                                                                     |     }
    0x000f7b60 b 0xf7944                                             |     goto label_1;
                                                                     | label_22:
    0x000f7b64 ldr r0, [r2, 4]                                       |     r0 = *((r2 + 4));
                                                                     |     do {
                                                                     | label_6:
    0x000f7b68 add sp, sp, 8                                         |         
    0x000f7b6c pop {r4, r5, r6, r7, r8, sb, sl, lr}                  |         
    0x000f7b70 b 0x4f7b8                                             |         void (*0x4f7b8)() ();
                                                                     | label_23:
    0x000f7b74 ldr r1, [r2, 4]                                       |         r1 = *((r2 + 4));
                                                                     | label_7:
    0x000f7b78 mov r0, r7                                            |         r0 = r7;
    0x000f7b7c bl 0x4f518                                            |         strcpy (r0, r1)
    0x000f7b80 mov r0, r7                                            |         r0 = r7;
    0x000f7b84 b 0xf7b68                                             |         
                                                                     |     } while (1);
                                                                     | label_24:
    0x000f7b88 ldr r0, [r2, 8]                                       |     r0 = *((r2 + 8));
    0x000f7b8c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x000f7b90 ldreq r0, [pc, 0x98]                                  |         r0 = *((pc + 0x98));
                                                                     |     }
                                                                     |     if (r0 != 0) {
    0x000f7b94 addeq r0, pc, r0                                      |         r0 = pc + r0;
                                                                     |     }
    0x000f7b98 b 0xf7b68                                             |     goto label_6;
                                                                     | label_25:
    0x000f7b9c ldr r1, [r2, 8]                                       |     r1 = *((r2 + 8));
    0x000f7ba0 cmp r1, 0                                             |     
                                                                     |     if (r1 != 0) {
    0x000f7ba4 ldreq r1, [pc, 0x88]                                  |         r1 = *((pc + 0x88));
                                                                     |     }
                                                                     |     if (r1 != 0) {
    0x000f7ba8 addeq r1, pc, r1                                      |         r1 = pc + r1;
                                                                     |     }
    0x000f7bac b 0xf7b78                                             |     goto label_7;
                                                                     | label_26:
    0x000f7bb0 ldr r4, [r2, 0xc]                                     |     r4 = *((r2 + 0xc));
    0x000f7bb4 b 0xf7944                                             |     goto label_1;
                                                                     | label_20:
    0x000f7bb8 mov r3, 0x79                                          |     r3 = 0x79;
    0x000f7bbc str r3, [sp]                                          |     *(sp) = r3;
    0x000f7bc0 ldr r3, [pc, 0x70]                                    |     r3 = *(0xf7c34);
    0x000f7bc4 mov r2, 0x6e                                          |     r2 = 0x6e;
    0x000f7bc8 add r3, pc, r3                                        |     r3 = pc + r3;
    0x000f7bcc b 0xf7a50                                             |     goto label_4;
                                                                     | label_13:
    0x000f7bd0 mov r3, 0x9e                                          |     r3 = 0x9e;
    0x000f7bd4 str r3, [sp]                                          |     *(sp) = r3;
    0x000f7bd8 ldr r3, [pc, 0x5c]                                    |     r3 = *(0xf7c38);
    0x000f7bdc mov r2, 0x78                                          |     r2 = 0x78;
    0x000f7be0 add r3, pc, r3                                        |     r3 = pc + r3;
    0x000f7be4 mov r1, 0x8e                                          |     r1 = 0x8e;
    0x000f7be8 b 0xf7a54                                             |     goto label_8;
                                                                     | label_12:
    0x000f7bec mov r3, r7                                            |     r3 = r7;
    0x000f7bf0 mov r2, sb                                            |     r2 = sb;
    0x000f7bf4 mov r1, r5                                            |     r1 = r5;
    0x000f7bf8 mov r0, r6                                            |     r0 = r6;
    0x000f7bfc mov ip, r8                                            |     
    0x000f7c00 str sl, [sp, 0x28]                                    |     *(arg_28h) = sl;
    0x000f7c04 add sp, sp, 8                                         |     
    0x000f7c08 pop {r4, r5, r6, r7, r8, sb, sl, lr}                  |     
    0x000f7c0c bx ip                                                 |     return void (*ip)() ();
                                                                     | }
    ; 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/libcrypto.so.1.1 @ 0xf7ca0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.ENGINE_ctrl_cmd ()                           | void ENGINE_ctrl_cmd (int32_t arg_20h, int32_t arg_24h, uint32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000f7ca0 cmp r0, 0                                     |     
    0x000f7ca4 push {r0, r1, r2, r4, r5, r6, r7, lr}         |     
    0x000f7ca8 ldr r4, [sp, 0x24]                            |     r4 = *(arg_24h);
    0x000f7cac mov r6, r2                                    |     r6 = r2;
    0x000f7cb0 clz r2, r1                                    |     r2 &= r1;
    0x000f7cb4 lsr r2, r2, 5                                 |     r2 >>= 5;
                                                             |     if (arg_20h != ) {
    0x000f7cb8 moveq r2, 1                                   |         r2 = 1;
                                                             |     }
    0x000f7cbc cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x000f7cc0 beq 0xf7cf4                                   |         goto label_2;
                                                             |     }
    0x000f7cc4 mov r3, 0xc7                                  |     r3 = 0xc7;
    0x000f7cc8 str r3, [sp]                                  |     *(sp) = r3;
    0x000f7ccc ldr r3, [pc, 0xac]                            |     r3 = *(0xf7d7c);
    0x000f7cd0 mov r2, 0x43                                  |     r2 = 0x43;
    0x000f7cd4 add r3, pc, r3                                |     r3 = pc + r3;
    0x000f7cd8 mov r1, 0xb2                                  |     r1 = 0xb2;
    0x000f7cdc mov r0, 0x26                                  |     r0 = 0x26;
    0x000f7ce0 bl 0xfc7b8                                    |     ERR_put_error ();
    0x000f7ce4 mov r4, 0                                     |     r4 = 0;
                                                             |     do {
                                                             | label_1:
    0x000f7ce8 mov r0, r4                                    |         r0 = r4;
    0x000f7cec add sp, sp, 0xc                               |         
    0x000f7cf0 pop {r4, r5, r6, r7, pc}                      |         
                                                             | label_2:
    0x000f7cf4 mov r7, r3                                    |         r7 = r3;
    0x000f7cf8 mov r3, r1                                    |         r3 = r1;
    0x000f7cfc ldr r1, [r0, 0x38]                            |         r1 = *((r0 + 0x38));
    0x000f7d00 mov r5, r0                                    |         r5 = r0;
    0x000f7d04 cmp r1, 0                                     |         
                                                             |         if (r1 != 0) {
    0x000f7d08 bne 0xf7d38                                   |             goto label_3;
                                                             |         }
                                                             | label_0:
    0x000f7d0c cmp r4, 0                                     |         
                                                             |         if (r4 != 0) {
    0x000f7d10 bne 0xf7d74                                   |             goto label_4;
                                                             |         }
    0x000f7d14 mov r3, 0xd9                                  |         r3 = 0xd9;
    0x000f7d18 str r3, [sp]                                  |         *(sp) = r3;
    0x000f7d1c ldr r3, [pc, 0x60]                            |         r3 = *(0xf7d80);
    0x000f7d20 mov r2, 0x89                                  |         r2 = 0x89;
    0x000f7d24 add r3, pc, r3                                |         r3 = pc + r3;
    0x000f7d28 mov r1, 0xb2                                  |         r1 = 0xb2;
    0x000f7d2c mov r0, 0x26                                  |         r0 = 0x26;
    0x000f7d30 bl 0xfc7b8                                    |         ERR_put_error ();
    0x000f7d34 b 0xf7ce8                                     |         
                                                             |     } while (1);
                                                             | label_3:
    0x000f7d38 mov r1, 0xd                                   |     r1 = 0xd;
    0x000f7d3c str r2, [sp]                                  |     *(sp) = r2;
    0x000f7d40 bl 0xf7904                                    |     r0 = ENGINE_ctrl ();
    0x000f7d44 subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 <= r0) {
    0x000f7d48 ble 0xf7d0c                                   |         goto label_0;
                                                             |     }
    0x000f7d4c ldr r3, [sp, 0x20]                            |     r3 = *(arg_20h);
    0x000f7d50 mov r2, r6                                    |     r2 = r6;
    0x000f7d54 str r3, [sp]                                  |     *(sp) = r3;
    0x000f7d58 mov r0, r5                                    |     r0 = r5;
    0x000f7d5c mov r3, r7                                    |     r3 = r7;
    0x000f7d60 bl 0xf7904                                    |     r0 = ENGINE_ctrl ();
    0x000f7d64 cmp r0, 0                                     |     
                                                             |     if (r0 > 0) {
    0x000f7d68 movle r4, 0                                   |         r4 = 0;
                                                             |     }
                                                             |     if (r0 <= 0) {
    0x000f7d6c movgt r4, 1                                   |         r4 = 1;
                                                             |     }
    0x000f7d70 b 0xf7ce8                                     |     goto label_1;
                                                             | label_4:
    0x000f7d74 bl 0xfc898                                    |     ERR_clear_error ();
    0x000f7d78 mov r4, 1                                     |     r4 = 1;
    0x000f7d7c b 0xf7ce8                                     |     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/libcrypto.so.1.1 @ 0xf7d88 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.ENGINE_ctrl_cmd_string ()                            | void ENGINE_ctrl_cmd_string (uint32_t arg1, int32_t arg2) {
                                                                     |     int32_t var_0h;
                                                                     |     char * * endptr;
                                                                     |     int32_t var_10h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x000f7d88 push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}         |     
    0x000f7d8c cmp r0, 0                                             |     
    0x000f7d90 mov r4, r3                                            |     r4 = r3;
    0x000f7d94 mov r3, r1                                            |     r3 = r1;
    0x000f7d98 clz r1, r1                                            |     r1 &= r1;
    0x000f7d9c lsr r1, r1, 5                                         |     r1 >>= 5;
                                                                     |     if (r0 == 0) {
    0x000f7da0 movne r5, r1                                          |         r5 = r1;
                                                                     |     }
                                                                     |     if (r0 != 0) {
    0x000f7da4 moveq r5, 1                                           |         r5 = 1;
                                                                     |     }
    0x000f7da8 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x000f7dac beq 0xf7dd8                                           |         
    0x000f7db0 mov r3, 0xed                                          |         r3 = 0xed;
    0x000f7db4 str r3, [sp]                                          |         *(sp) = r3;
    0x000f7db8 ldr r3, [pc, 0x1d4]                                   |         r3 = *(0xf7f90);
    0x000f7dbc mov r2, 0x43                                          |         r2 = 0x43;
    0x000f7dc0 add r3, pc, r3                                        |         r3 = pc + r3;
                                                                     | label_1:
    0x000f7dc4 mov r1, 0xab                                          |         r1 = 0xab;
    0x000f7dc8 mov r0, 0x26                                          |         r0 = 0x26;
    0x000f7dcc bl 0xfc7b8                                            |         ERR_put_error ();
    0x000f7dd0 mov r4, 0                                             |         r4 = 0;
    0x000f7dd4 b 0xf7e64                                             |         goto label_3;
                                                                     |     }
    0x000f7dd8 mov r6, r2                                            |     r6 = r2;
    0x000f7ddc ldr r2, [r0, 0x38]                                    |     r2 = *((r0 + 0x38));
    0x000f7de0 mov r7, r0                                            |     r7 = r0;
    0x000f7de4 cmp r2, 0                                             |     
    0x000f7de8 bne 0xf7e18                                           |     
                                                                     |     while (r8 <= r0) {
    0x000f7dec cmp r4, 0                                             |         
                                                                     |         if (r4 != 0) {
    0x000f7df0 bne 0xf7e5c                                           |             goto label_4;
                                                                     |         }
    0x000f7df4 mov r3, 0xff                                          |         r3 = 0xff;
    0x000f7df8 str r3, [sp]                                          |         *(sp) = r3;
    0x000f7dfc ldr r3, [pc, 0x194]                                   |         r3 = *(0xf7f94);
    0x000f7e00 mov r2, 0x89                                          |         r2 = 0x89;
    0x000f7e04 add r3, pc, r3                                        |         r3 = pc + r3;
                                                                     | label_0:
    0x000f7e08 mov r1, 0xab                                          |         r1 = 0xab;
    0x000f7e0c mov r0, 0x26                                          |         r0 = 0x26;
    0x000f7e10 bl 0xfc7b8                                            |         ERR_put_error ();
    0x000f7e14 b 0xf7e64                                             |         goto label_3;
    0x000f7e18 str r5, [sp]                                          |         *(sp) = r5;
    0x000f7e1c mov r2, r5                                            |         r2 = r5;
    0x000f7e20 mov r1, 0xd                                           |         r1 = 0xd;
    0x000f7e24 bl 0xf7904                                            |         r0 = ENGINE_ctrl ();
    0x000f7e28 subs r8, r0, 0                                        |         r8 = r0 - 0;
    0x000f7e2c ble 0xf7dec                                           |         
                                                                     |     }
    0x000f7e30 mov r1, r8                                            |     r1 = r8;
    0x000f7e34 mov r0, r7                                            |     r0 = r7;
    0x000f7e38 bl 0xf7c40                                            |     r0 = ENGINE_cmd_is_executable ();
    0x000f7e3c subs r4, r0, 0                                        |     r4 = r0 - 0;
                                                                     |     if (r4 != r0) {
    0x000f7e40 bne 0xf7e70                                           |         goto label_5;
                                                                     |     }
    0x000f7e44 mov r3, 0x104                                         |     r3 = 0x104;
    0x000f7e48 str r3, [sp]                                          |     *(sp) = r3;
    0x000f7e4c ldr r3, [pc, 0x148]                                   |     r3 = *(0xf7f98);
    0x000f7e50 mov r2, 0x86                                          |     r2 = 0x86;
    0x000f7e54 add r3, pc, r3                                        |     r3 = pc + r3;
    0x000f7e58 b 0xf7e08                                             |     goto label_0;
                                                                     | label_4:
    0x000f7e5c bl 0xfc898                                            |     ERR_clear_error ();
    0x000f7e60 mov r4, 1                                             |     r4 = 1;
                                                                     |     do {
                                                                     | label_3:
    0x000f7e64 mov r0, r4                                            |         r0 = r4;
    0x000f7e68 add sp, sp, 0x10                                      |         
    0x000f7e6c pop {r4, r5, r6, r7, r8, pc}                          |         
                                                                     | label_5:
    0x000f7e70 str r5, [sp]                                          |         *(sp) = r5;
    0x000f7e74 mov r3, r5                                            |         r3 = r5;
    0x000f7e78 mov r2, r8                                            |         r2 = r8;
    0x000f7e7c mov r1, 0x12                                          |         r1 = 0x12;
    0x000f7e80 mov r0, r7                                            |         r0 = r7;
    0x000f7e84 bl 0xf7904                                            |         r0 = ENGINE_ctrl ();
    0x000f7e88 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x000f7e8c bge 0xf7ea8                                           |             
    0x000f7e90 ldr r3, [pc, 0x108]                                   |             r3 = *(0xf7f9c);
    0x000f7e94 mov r2, 0x6e                                          |             r2 = 0x6e;
    0x000f7e98 str r3, [sp]                                          |             *(sp) = r3;
    0x000f7e9c ldr r3, [pc, 0x100]                                   |             r3 = *(0xf7fa0);
    0x000f7ea0 add r3, pc, r3                                        |             r3 = pc + r3;
    0x000f7ea4 b 0xf7dc4                                             |             goto label_1;
                                                                     |         }
    0x000f7ea8 ands r2, r0, 4                                        |         r2 = r0 & 4;
                                                                     |         if (r2 == r0) {
    0x000f7eac beq 0xf7ef8                                           |             goto label_6;
                                                                     |         }
    0x000f7eb0 cmp r6, 0                                             |         
                                                                     |         if (r6 != 0) {
    0x000f7eb4 beq 0xf7ed0                                           |             
    0x000f7eb8 mov r3, 0x118                                         |             r3 = 0x118;
    0x000f7ebc str r3, [sp]                                          |             *(sp) = r3;
    0x000f7ec0 ldr r3, [pc, 0xe0]                                    |             r3 = *(0xf7fa4);
    0x000f7ec4 mov r2, 0x88                                          |             r2 = 0x88;
    0x000f7ec8 add r3, pc, r3                                        |             r3 = pc + r3;
    0x000f7ecc b 0xf7dc4                                             |             goto label_1;
                                                                     |         }
    0x000f7ed0 mov r3, r6                                            |         r3 = r6;
    0x000f7ed4 mov r2, r6                                            |         r2 = r6;
    0x000f7ed8 str r6, [sp]                                          |         *(sp) = r6;
                                                                     | label_2:
    0x000f7edc mov r1, r8                                            |         r1 = r8;
    0x000f7ee0 mov r0, r7                                            |         r0 = r7;
    0x000f7ee4 bl 0xf7904                                            |         r0 = ENGINE_ctrl ();
    0x000f7ee8 cmp r0, 0                                             |         
                                                                     |         if (r0 > 0) {
    0x000f7eec movle r4, 0                                           |             r4 = 0;
                                                                     |         }
                                                                     |         if (r0 <= 0) {
    0x000f7ef0 movgt r4, 1                                           |             r4 = 1;
                                                                     |         }
    0x000f7ef4 b 0xf7e64                                             |         
                                                                     |     } while (1);
                                                                     | label_6:
    0x000f7ef8 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x000f7efc bne 0xf7f18                                           |         
    0x000f7f00 mov r3, 0x128                                         |         r3 = 0x128;
    0x000f7f04 str r3, [sp]                                          |         *(sp) = r3;
    0x000f7f08 ldr r3, [pc, 0x9c]                                    |         r3 = *(0xf7fa8);
    0x000f7f0c mov r2, 0x87                                          |         r2 = 0x87;
    0x000f7f10 add r3, pc, r3                                        |         r3 = pc + r3;
    0x000f7f14 b 0xf7dc4                                             |         goto label_1;
                                                                     |     }
    0x000f7f18 tst r0, 2                                             |     
                                                                     |     if ((r0 & 2) == 0) {
    0x000f7f1c strne r2, [sp]                                        |         *(sp) = r2;
                                                                     |     }
                                                                     |     if ((r0 & 2) != 0) {
    0x000f7f20 movne r3, r6                                          |         r3 = r6;
                                                                     |         goto label_7;
                                                                     |     }
                                                                     |     if ((r0 & 2) != 0) {
                                                                     | label_7:
    0x000f7f24 bne 0xf7edc                                           |         goto label_2;
                                                                     |     }
    0x000f7f28 ands r4, r0, 1                                        |     r4 = r0 & 1;
                                                                     |     if (r4 == r0) {
    0x000f7f2c bne 0xf7f48                                           |         
    0x000f7f30 ldr r3, [pc, 0x78]                                    |         r3 = *(0xf7fac);
    0x000f7f34 mov r2, 0x6e                                          |         r2 = 0x6e;
    0x000f7f38 str r3, [sp]                                          |         *(sp) = r3;
    0x000f7f3c ldr r3, [pc, 0x70]                                    |         r3 = *(0xf7fb0);
    0x000f7f40 add r3, pc, r3                                        |         r3 = pc + r3;
    0x000f7f44 b 0xf7e08                                             |         goto label_0;
                                                                     |     }
    0x000f7f48 mov r2, 0xa                                           |     r2 = 0xa;
    0x000f7f4c add r1, sp, 0xc                                       |     r1 += endptr;
    0x000f7f50 mov r0, r6                                            |     r0 = r6;
    0x000f7f54 bl 0x4f7d0                                            |     strtol (r0, r1, r2);
    0x000f7f58 ldr r3, [sp, 0xc]                                     |     r3 = endptr;
    0x000f7f5c cmp r3, r6                                            |     
    0x000f7f60 mov r2, r0                                            |     r2 = r0;
                                                                     |     if (r3 != r6) {
    0x000f7f64 beq 0xf7f74                                           |         
    0x000f7f68 ldrb r3, [r3]                                         |         r3 = *(r3);
    0x000f7f6c cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x000f7f70 beq 0xf7f8c                                           |             goto label_8;
                                                                     |         }
                                                                     |     }
    0x000f7f74 mov r3, 0x140                                         |     r3 = 0x140;
    0x000f7f78 str r3, [sp]                                          |     *(sp) = r3;
    0x000f7f7c ldr r3, [pc, 0x34]                                    |     r3 = *(0xf7fb4);
    0x000f7f80 mov r2, 0x85                                          |     r2 = 0x85;
    0x000f7f84 add r3, pc, r3                                        |     r3 = pc + r3;
    0x000f7f88 b 0xf7dc4                                             |     goto label_1;
                                                                     | label_8:
    0x000f7f8c str r3, [sp]                                          |     *(sp) = r3;
    0x000f7f90 b 0xf7edc                                             |     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/libcrypto.so.1.1 @ 0x127870 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.PEM_dek_info ()                              | void PEM_dek_info (int32_t arg1, char * arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00127870 push {r4, r5, r6, r7, r8, sb, sl, lr}         |     
    0x00127874 mov r8, r1                                    |     r8 = r1;
    0x00127878 mov r5, r0                                    |     r5 = r0;
    0x0012787c mov r7, r2                                    |     r7 = r2;
    0x00127880 mov r6, r3                                    |     r6 = r3;
    0x00127884 bl 0x4f7b8                                    |     strlen (r0);
    0x00127888 ldr r2, [pc, 0x84]                            |     r2 = *(0x127910);
    0x0012788c mov r3, r8                                    |     r3 = r8;
    0x00127890 add r2, pc, r2                                |     r2 = pc + r2;
    0x00127894 rsb r4, r0, 0x400                             |     r4 = 0x400 - r0;
    0x00127898 add r5, r5, r0                                |     r5 += r0;
    0x0012789c mov r1, r4                                    |     r1 = r4;
    0x001278a0 mov r0, r5                                    |     r0 = r5;
    0x001278a4 bl 0x6bc48                                    |     r0 = BIO_snprintf ();
    0x001278a8 cmp r0, 0                                     |     
                                                             |     if (r0 > 0) {
    0x001278ac pople {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             |     }
    0x001278b0 ldr sb, [pc, 0x60]                            |     sb = *(0x127914);
    0x001278b4 sub r4, r4, r0                                |     r4 -= r0;
    0x001278b8 add r5, r5, r0                                |     r5 += r0;
    0x001278bc mov r8, r6                                    |     r8 = r6;
    0x001278c0 add sb, pc, sb                                |     sb = pc + sb;
                                                             |     do {
    0x001278c4 sub r3, r8, r6                                |         r3 = r8 - r6;
    0x001278c8 cmp r7, r3                                    |         
                                                             |         if (r7 <= r3) {
    0x001278cc bgt 0x1278ec                                  |             
    0x001278d0 cmp r4, 1                                     |             
                                                             |             if (r4 > 1) {
    0x001278d4 pople {r4, r5, r6, r7, r8, sb, sl, pc}        |                 
                                                             |             }
    0x001278d8 ldr r1, [pc, 0x3c]                            |             r1 = *(0x127918);
    0x001278dc mov r0, r5                                    |             r0 = r5;
    0x001278e0 add r1, pc, r1                                |             r1 = pc + r1;
    0x001278e4 pop {r4, r5, r6, r7, r8, sb, sl, lr}          |             
    0x001278e8 b 0x4f518                                     |             void (*0x4f518)() ();
                                                             |         }
    0x001278ec ldrb r3, [r8], 1                              |         r3 = *(r8);
                                                             |         r8++;
    0x001278f0 mov r2, sb                                    |         r2 = sb;
    0x001278f4 mov r1, r4                                    |         r1 = r4;
    0x001278f8 mov r0, r5                                    |         r0 = r5;
    0x001278fc bl 0x6bc48                                    |         r0 = BIO_snprintf ();
    0x00127900 cmp r0, 0                                     |         
                                                             |         if (r0 > 0) {
    0x00127904 pople {r4, r5, r6, r7, r8, sb, sl, pc}        |             
                                                             |         }
    0x00127908 sub r4, r4, r0                                |         r4 -= r0;
    0x0012790c add r5, r5, r0                                |         r5 += r0;
    0x00127910 b 0x1278c4                                    |         
                                                             |     } 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/libcrypto.so.1.1 @ 0x138344 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.RAND_file_name ()                    | void RAND_file_name (int32_t arg1, int32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00138344 push {r4, r5, r6, r7, r8, lr}         |     
    0x00138348 mov r4, r0                            |     r4 = r0;
    0x0013834c ldr r0, [pc, 0xb8]                    |     r0 = *(0x138408);
    0x00138350 mov r6, r1                            |     r6 = r1;
    0x00138354 add r0, pc, r0                        |     r0 = pc + r0;
    0x00138358 bl 0x111efc                           |     r0 = fcn_00111efc (r0);
    0x0013835c subs r5, r0, 0                        |     r5 = r0 - 0;
                                                     |     if (r5 != r0) {
    0x00138360 beq 0x138370                          |         
    0x00138364 ldrb r3, [r5]                         |         r3 = *(r5);
    0x00138368 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0013836c bne 0x138394                          |             goto label_2;
                                                     |         }
                                                     |     }
    0x00138370 ldr r0, [pc, 0x98]                    |     r0 = *(0x13840c);
    0x00138374 add r0, pc, r0                        |     r0 = pc + r0;
    0x00138378 bl 0x111efc                           |     r0 = fcn_00111efc (r0);
    0x0013837c subs r5, r0, 0                        |     r5 = r0 - 0;
                                                     |     if (r5 == r0) {
    0x00138380 movne r7, 0                           |         r7 = 0;
                                                     |     }
    0x00138384 bne 0x138398                          |     
                                                     |     while (r3 == 0) {
                                                     | label_0:
    0x00138388 mov r4, 0                             |         r4 = 0;
                                                     | label_1:
    0x0013838c mov r0, r4                            |         r0 = r4;
    0x00138390 pop {r4, r5, r6, r7, r8, pc}          |         
                                                     | label_2:
    0x00138394 mov r7, 1                             |         r7 = 1;
    0x00138398 ldrb r3, [r5]                         |         r3 = *(r5);
    0x0013839c cmp r3, 0                             |         
    0x001383a0 beq 0x138388                          |         
                                                     |     }
    0x001383a4 mov r0, r5                            |     r0 = r5;
    0x001383a8 bl 0x4f7b8                            |     strlen (r0);
    0x001383ac cmp r7, 0                             |     
                                                     |     if (r7 == 0) {
    0x001383b0 beq 0x1383d0                          |         goto label_3;
                                                     |     }
    0x001383b4 add r0, r0, 1                         |     r0++;
    0x001383b8 cmp r0, r6                            |     
                                                     |     if (r0 >= r6) {
    0x001383bc bhs 0x138388                          |         goto label_0;
                                                     |     }
    0x001383c0 mov r1, r5                            |     r1 = r5;
    0x001383c4 mov r0, r4                            |     r0 = r4;
    0x001383c8 bl 0x4f518                            |     strcpy (r0, r1)
    0x001383cc b 0x13838c                            |     goto label_1;
                                                     | label_3:
    0x001383d0 add r0, r0, 6                         |     r0 += 6;
    0x001383d4 cmp r0, r6                            |     
                                                     |     if (r0 >= r6) {
    0x001383d8 bhs 0x138388                          |         goto label_0;
                                                     |     }
    0x001383dc mov r1, r5                            |     r1 = r5;
    0x001383e0 mov r0, r4                            |     r0 = r4;
    0x001383e4 bl 0x4f518                            |     strcpy (r0, r1)
    0x001383e8 ldr r1, [pc, 0x24]                    |     r1 = *(0x138410);
    0x001383ec mov r0, r4                            |     r0 = r4;
    0x001383f0 add r1, pc, r1                        |     r1 = pc + r1;
    0x001383f4 bl 0x4f560                            |     strcat (r0, r1);
    0x001383f8 ldr r1, [pc, 0x18]                    |     r1 = *(0x138414);
    0x001383fc mov r0, r4                            |     r0 = r4;
    0x00138400 add r1, pc, r1                        |     r1 = pc + r1;
    0x00138404 bl 0x4f560                            |     strcat (r0, r1);
    0x00138408 b 0x13838c                            |     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/libcrypto.so.1.1 @ 0x15c83c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.TS_RESP_verify_response ()                       | void TS_RESP_verify_response (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_14h;
                                                                 |     char * dest;
                                                                 |     void * s;
                                                                 |     int32_t var_118h;
                                                                 |     int32_t var_11ch;
                                                                 |     r0 = arg1;
    0x0015c83c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0015c840 ldm r1, {r6, r7, r8}                              |     r6 = *(r1);
                                                                 |     r7 = *((r1 + 4));
                                                                 |     r8 = *((r1 + 8));
    0x0015c844 sub sp, sp, 0x11c                                 |     
    0x0015c848 mov r5, r0                                        |     r5 = r0;
    0x0015c84c ldr r0, [r6]                                      |     r0 = *(r6);
    0x0015c850 bl 0x550bc                                        |     ASN1_INTEGER_get ();
    0x0015c854 mov r1, 0                                         |     r1 = 0;
    0x0015c858 mov r2, 0xfc                                      |     r2 = 0xfc;
    0x0015c85c str r1, [sp, 0x18]                                |     dest = r1;
    0x0015c860 mov r4, r0                                        |     r4 = r0;
    0x0015c864 add r0, sp, 0x1c                                  |     r0 += s;
    0x0015c868 bl 0x4f4ac                                        |     memset (r0, r1, r2);
    0x0015c86c cmp r4, 1                                         |     
                                                                 |     if (r4 < 1) {
    0x0015c870 bls 0x15cac8                                      |         goto label_2;
                                                                 |     }
    0x0015c874 cmp r4, 5                                         |     
                                                                 |     if (r4 > 5) {
    0x0015c878 bhi 0x15c90c                                      |         goto label_3;
                                                                 |     }
    0x0015c87c ldr r3, [pc, 0x264]                               |     r3 = *(0x15cae4);
    0x0015c880 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0015c884 ldr r8, [r3, r4, lsl 2]                           |     r8 = *(0x15cae4);
                                                                 |     do {
    0x0015c888 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x0015c88c bl 0x154518                                       |         r0 = OPENSSL_sk_num ();
    0x0015c890 cmp r0, 0                                         |         
                                                                 |         if (r0 > 0) {
    0x0015c894 movle r4, 0                                       |             r4 = 0;
                                                                 |         }
                                                                 |         if (r0 <= 0) {
    0x0015c898 ble 0x15c9b0                                      |             goto label_4;
                                                                 |         }
    0x0015c89c ldr sb, [r6, 4]                                   |         sb = *((r6 + 4));
    0x0015c8a0 ldr r7, [pc, 0x244]                               |         r7 = *(0x15cae8);
    0x0015c8a4 mov r4, 0                                         |         r4 = 0;
    0x0015c8a8 mov r5, r4                                        |         r5 = r4;
                                                                 | label_1:
    0x0015c8ac mov r0, sb                                        |         r0 = sb;
    0x0015c8b0 bl 0x154518                                       |         r0 = OPENSSL_sk_num ();
    0x0015c8b4 cmp r5, r0                                        |         
                                                                 |         if (r5 < r0) {
    0x0015c8b8 blt 0x15c918                                      |             goto label_5;
                                                                 |         }
    0x0015c8bc ldr r5, [pc, 0x22c]                               |         r5 = *(0x15caec);
    0x0015c8c0 mov r0, r4                                        |         r0 = r4;
    0x0015c8c4 add r5, pc, r5                                    |         r5 = pc + r5;
    0x0015c8c8 mov r1, r5                                        |         r1 = r5;
    0x0015c8cc ldr r2, [pc, 0x220]                               |         r2 = *(0x15caf0);
    0x0015c8d0 bl 0x118474                                       |         r0 = CRYPTO_malloc ();
    0x0015c8d4 subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 == r0) {
    0x0015c8d8 movne r5, r4                                      |             r5 = r4;
                                                                 |         }
                                                                 |         if (r4 == r0) {
    0x0015c8dc movne r7, 0                                       |             r7 = 0;
                                                                 |         }
                                                                 |         if (r4 == r0) {
    0x0015c8e0 movne fp, 0x2f                                    |             
                                                                 |         }
                                                                 |         if (r4 != r0) {
    0x0015c8e4 bne 0x15c998                                      |             goto label_6;
                                                                 |         }
    0x0015c8e8 ldr r3, [pc, 0x208]                               |         r3 = *(0x15caf4);
    0x0015c8ec mov r2, 0x41                                      |         r2 = 0x41;
    0x0015c8f0 str r3, [sp]                                      |         *(sp) = r3;
    0x0015c8f4 mov r1, 0x69                                      |         r1 = 0x69;
    0x0015c8f8 mov r3, r5                                        |         r3 = r5;
    0x0015c8fc mov r0, 0x2f                                      |         r0 = 0x2f;
    0x0015c900 bl 0xfc7b8                                        |         ERR_put_error ();
                                                                 | label_0:
    0x0015c904 mov r0, 0                                         |         r0 = 0;
    0x0015c908 b 0x15cae0                                        |         goto label_7;
                                                                 | label_3:
    0x0015c90c ldr r8, [pc, 0x1e8]                               |         r8 = *(0x15caf8);
    0x0015c910 add r8, pc, r8                                    |         r8 = pc + r8;
    0x0015c914 b 0x15c888                                        |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x0015c918 mov r1, r5                                        |     r1 = r5;
    0x0015c91c mov r0, sb                                        |     r0 = sb;
    0x0015c920 bl 0x154528                                       |     r0 = OPENSSL_sk_value ();
    0x0015c924 mov sl, r0                                        |     sl = r0;
    0x0015c928 bl 0x5b9e0                                        |     ASN1_STRING_length ();
    0x0015c92c sub r3, r7, r4                                    |     r3 = r7 - r4;
    0x0015c930 cmp r0, r3                                        |     
                                                                 |     if (r0 > r3) {
    0x0015c934 bgt 0x15c904                                      |         goto label_0;
                                                                 |     }
    0x0015c938 mov r0, sl                                        |     r0 = sl;
    0x0015c93c bl 0x5b9e0                                        |     ASN1_STRING_length ();
    0x0015c940 add r5, r5, 1                                     |     r5++;
    0x0015c944 add r4, r4, r0                                    |     r4 += r0;
    0x0015c948 add r4, r4, 1                                     |     r4++;
    0x0015c94c b 0x15c8ac                                        |     goto label_1;
                                                                 |     do {
    0x0015c950 mov r1, r7                                        |         r1 = r7;
    0x0015c954 mov r0, sb                                        |         r0 = sb;
    0x0015c958 bl 0x154528                                       |         OPENSSL_sk_value ();
    0x0015c95c str r0, [sp, 0x14]                                |         var_14h = r0;
    0x0015c960 bl 0x5b9e0                                        |         ASN1_STRING_length ();
    0x0015c964 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0015c968 cmp r7, 0                                         |         
                                                                 |         if (r7 <= 0) {
    0x0015c96c strbgt fp, [r5]                                   |             *(r5) = fp;
                                                                 |         }
                                                                 |         if (r7 <= 0) {
    0x0015c970 addgt r5, r5, 1                                   |             r5++;
                                                                 |         }
    0x0015c974 add r7, r7, 1                                     |         r7++;
    0x0015c978 mov sl, r0                                        |         sl = r0;
    0x0015c97c mov r0, r3                                        |         r0 = r3;
    0x0015c980 bl 0x5b9f8                                        |         ASN1_STRING_get0_data ();
    0x0015c984 mov r2, sl                                        |         r2 = sl;
    0x0015c988 mov r1, r0                                        |         r1 = r0;
    0x0015c98c mov r0, r5                                        |         r0 = r5;
    0x0015c990 bl 0x4f6bc                                        |         strncpy (r0, r1, r2);
    0x0015c994 add r5, r5, sl                                    |         r5 += sl;
                                                                 | label_6:
    0x0015c998 mov r0, sb                                        |         r0 = sb;
    0x0015c99c bl 0x154518                                       |         r0 = OPENSSL_sk_num ();
    0x0015c9a0 cmp r7, r0                                        |         
    0x0015c9a4 blt 0x15c950                                      |         
                                                                 |     } while (r7 < r0);
    0x0015c9a8 mov r3, 0                                         |     r3 = 0;
    0x0015c9ac strb r3, [r5]                                     |     *(r5) = r3;
                                                                 | label_4:
    0x0015c9b0 ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x0015c9b4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0015c9b8 beq 0x15ca30                                      |         goto label_8;
                                                                 |     }
    0x0015c9bc ldr r7, [pc, 0x13c]                               |     
    0x0015c9c0 ldr sb, [pc, 0x13c]                               |     
    0x0015c9c4 add r7, pc, r7                                    |     r7 = pc + r7;
    0x0015c9c8 add sb, pc, sb                                    |     sb = pc + sb;
    0x0015c9cc mov r5, 0                                         |     r5 = 0;
    0x0015c9d0 mov sl, 1                                         |     sl = 1;
    0x0015c9d4 add r7, r7, 0x18                                  |     r7 = 0x15cb14;
    0x0015c9d8 add sb, sb, 0x18                                  |     sb = 0x15cb18;
                                                                 |     do {
    0x0015c9dc ldr r1, [r5, r7]                                  |         r1 = *((r5 + r7));
    0x0015c9e0 ldr r0, [r6, 8]                                   |         r0 = *((r6 + 8));
    0x0015c9e4 bl 0x53a14                                        |         r0 = ASN1_BIT_STRING_get_bit ();
    0x0015c9e8 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0015c9ec beq 0x15ca24                                      |             
    0x0015c9f0 cmp sl, 0                                         |             
    0x0015c9f4 add r3, sp, 0x18                                  |             r3 += dest;
                                                                 |             if (sl == 0) {
    0x0015c9f8 bne 0x15ca10                                      |                 
    0x0015c9fc ldr r1, [pc, 0x104]                               |                 r1 = *(0x15cb04);
    0x0015ca00 mov r0, r3                                        |                 r0 = r3;
    0x0015ca04 add r1, pc, r1                                    |                 r1 = pc + r1;
    0x0015ca08 bl 0x4f560                                        |                 r0 = strcat (r0, r1);
    0x0015ca0c mov r3, r0                                        |                 r3 = r0;
                                                                 |             }
    0x0015ca10 add r2, sb, r5                                    |             r2 = sb + r5;
    0x0015ca14 ldr r1, [r2, 4]                                   |             r1 = *((r2 + 4));
    0x0015ca18 mov r0, r3                                        |             r0 = r3;
    0x0015ca1c bl 0x4f560                                        |             strcat (r0, r1);
    0x0015ca20 mov sl, 0                                         |             sl = 0;
                                                                 |         }
    0x0015ca24 add r5, r5, 8                                     |         r5 += 8;
    0x0015ca28 cmp r5, 0x40                                      |         
    0x0015ca2c bne 0x15c9dc                                      |         
                                                                 |     } while (r5 != 0x40);
                                                                 | label_8:
    0x0015ca30 add r5, sp, 0x118                                 |     r5 += var_118h;
    0x0015ca34 ldrb r3, [r5, -0x100]!                            |     r3 = dest;
    0x0015ca38 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0015ca3c bne 0x15ca50                                      |         
    0x0015ca40 ldr r1, [pc, 0xc4]                                |         r1 = *(0x15cb08);
    0x0015ca44 mov r0, r5                                        |         r0 = r5;
    0x0015ca48 add r1, pc, r1                                    |         r1 = pc + r1;
    0x0015ca4c bl 0x4f518                                        |         strcpy (r0, r1)
                                                                 |     }
    0x0015ca50 ldr r3, [pc, 0xb8]                                |     r3 = *(0x15cb0c);
    0x0015ca54 mov r2, 0x6b                                      |     r2 = 0x6b;
    0x0015ca58 str r3, [sp]                                      |     *(sp) = r3;
    0x0015ca5c ldr r3, [pc, 0xb0]                                |     r3 = *(0x15cb10);
    0x0015ca60 mov r1, 0x68                                      |     r1 = 0x68;
    0x0015ca64 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0015ca68 mov r0, 0x2f                                      |     r0 = 0x2f;
    0x0015ca6c bl 0xfc7b8                                        |     ERR_put_error ();
    0x0015ca70 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0015ca74 movne r3, r4                                      |         r3 = r4;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x0015ca78 ldreq r3, [pc, 0x98]                              |         r3 = *((pc + 0x98));
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x0015ca7c addeq r3, pc, r3                                  |         r3 = pc + r3;
                                                                 |     }
    0x0015ca80 ldr r2, [pc, 0x94]                                |     r2 = *(0x15cb18);
    0x0015ca84 str r3, [sp]                                      |     *(sp) = r3;
    0x0015ca88 ldr r1, [pc, 0x90]                                |     r1 = *(0x15cb1c);
    0x0015ca8c ldr r3, [pc, 0x90]                                |     r3 = *(0x15cb20);
    0x0015ca90 add r2, pc, r2                                    |     r2 = pc + r2;
    0x0015ca94 str r2, [sp, 4]                                   |     var_4h = r2;
    0x0015ca98 str r5, [sp, 8]                                   |     var_8h = r5;
    0x0015ca9c mov r2, r8                                        |     r2 = r8;
    0x0015caa0 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0015caa4 add r1, pc, r1                                    |     r1 = pc + r1;
    0x0015caa8 mov r0, 6                                         |     r0 = 6;
    0x0015caac bl 0xfcf84                                        |     ERR_add_error_data ();
    0x0015cab0 ldr r1, [pc, 0x70]                                |     r1 = *(0x15cb24);
    0x0015cab4 ldr r2, [pc, 0x70]                                |     r2 = *(0x15cb28);
    0x0015cab8 add r1, pc, r1                                    |     r1 = pc + r1;
    0x0015cabc mov r0, r4                                        |     r0 = r4;
    0x0015cac0 bl 0x11842c                                       |     CRYPTO_free ();
    0x0015cac4 b 0x15c904                                        |     goto label_0;
                                                                 | label_2:
    0x0015cac8 mov r2, r8                                        |     r2 = r8;
    0x0015cacc mov r1, r7                                        |     r1 = r7;
    0x0015cad0 mov r0, r5                                        |     r0 = r5;
    0x0015cad4 bl 0x15c5b0                                       |     r0 = fcn_0015c5b0 (r0, r1);
    0x0015cad8 adds r0, r0, 0                                    |     r0 += 0;
                                                                 |     if (r0 == r0) {
    0x0015cadc movne r0, 1                                       |         r0 = 1;
                                                                 |     }
                                                                 | label_7:
    0x0015cae0 add sp, sp, 0x11c                                 |     
    0x0015cae4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | }

[*] Function strcpy used 9 times libcrypto.so.1.1