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

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


[*] Function popen 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 @ 0x500bc */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) entry.fini0 ()               | void entry_fini0 () {
    0x000500bc ldr r3, [pc, 0x68]        |     r3 = *(0x50128);
    0x000500c0 push {r4, lr}             |     
    0x000500c4 ldr r4, [pc, 0x64]        |     r4 = *(0x5012c);
    0x000500c8 add r3, pc, r3            |     r3 = pc + r3;
    0x000500cc ldrb r3, [r3]             |     r3 = *(r3);
    0x000500d0 add r4, pc, r4            |     r4 = pc + r4;
    0x000500d4 cmp r3, 0                 |     
    0x000500d8 popne {r4, pc}            |     
    0x000500dc ldr r3, [pc, 0x50]        |     r3 = *(0x50130);
    0x000500e0 ldr r3, [r4, r3]          |     r3 = *(0x5012c);
    0x000500e4 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x000500e8 beq 0x500f8               |         
    0x000500ec ldr r3, [pc, 0x44]        |         r3 = *(0x50134);
    0x000500f0 ldr r0, [pc, r3]          |         r0 = *(0x000500f8);
    0x000500f4 bl 0x4f2a8                |         cxa_finalize ();
                                         |     }
    0x000500f8 bl 0x50000                |     entry0 ();
    0x000500fc ldr r3, [pc, 0x38]        |     r3 = *(0x50138);
    0x00050100 ldr r3, [r4, r3]          |     r3 = *((r4 + r3));
    0x00050104 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00050108 beq 0x50118               |         
    0x0005010c ldr r0, [pc, 0x2c]        |         r0 = *(0x5013c);
    0x00050110 add r0, pc, r0            |         r0 = pc + r0;
    0x00050114 bl 0x4f5f0                |         loc_imp_deregister_frame_info ();
                                         |     }
    0x00050118 ldr r3, [pc, 0x24]        |     r3 = *(0x50140);
    0x0005011c mov r2, 1                 |     r2 = 1;
    0x00050120 add r3, pc, r3            |     r3 = pc + r3;
    0x00050124 strb r2, [r3]             |     *(r3) = r2;
    0x00050128 pop {r4, 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 @ 0x70a78 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00070a78 ()                                      | void fcn_00070a78 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00070a78 push {r0, r1, r4, r5, r6, r7, r8, sb, sl, lr}     |     
    0x00070a7c ldr r7, [r1, 0x1c]                                |     r7 = *((r1 + 0x1c));
    0x00070a80 mov r6, r0                                        |     r6 = r0;
    0x00070a84 mov r4, r1                                        |     r4 = r1;
    0x00070a88 mvn r5, 0                                         |     r5 = ~0;
    0x00070a8c mov r8, 5                                         |     r8 = 5;
                                                                 | label_1:
    0x00070a90 mov sb, 0                                         |     sb = 0;
                                                                 | label_0:
    0x00070a94 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00070a98 sub r2, r3, 1                                     |     r2 = r3 - 1;
    0x00070a9c cmp r2, 5                                         |     
                                                                 |     if (r2 > 5) {
                                                                 |         /* switch table (6 cases) at 0x70aa8 */
    0x00070aa0 addls pc, pc, r2, lsl 2                           |         pc += (r2 << 2);
                                                                 |     }
    0x00070aa4 b 0x70ac4                                         |     goto label_2;
    0x00070aa8 b 0x70ae8                                         |     goto label_7;
    0x00070aac b 0x70b7c                                         |     goto label_8;
    0x00070ab0 b 0x70c20                                         |     goto label_9;
    0x00070ab4 b 0x70ccc                                         |     goto label_10;
    0x00070ab8 b 0x70ac0                                         |     goto label_11;
    0x00070abc b 0x70dcc                                         |     goto label_12;
                                                                 | label_11:
    0x00070ac0 mov r5, 1                                         |     r5 = 1;
                                                                 |     do {
                                                                 | label_2:
    0x00070ac4 cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x00070ac8 beq 0x70b70                                       |             goto label_13;
                                                                 |         }
    0x00070acc ldr r1, [r4]                                      |         r1 = *(r4);
    0x00070ad0 mov r2, r5                                        |         r2 = r5;
    0x00070ad4 mov r0, r6                                        |         r0 = r6;
    0x00070ad8 mov r3, r7                                        |         r3 = r7;
    0x00070adc add sp, sp, 8                                     |         
    0x00070ae0 pop {r4, r5, r6, r7, r8, sb, sl, lr}              |         
    0x00070ae4 bx r3                                             |         return uint32_t (*r3)() ();
                                                                 | label_7:
    0x00070ae8 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00070aec cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00070af0 bne 0x70b48                                       |             goto label_14;
                                                                 |         }
    0x00070af4 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x00070af8 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00070afc bne 0x70b48                                       |             goto label_14;
                                                                 |         }
    0x00070b00 mov r3, 0x57                                      |         r3 = 0x57;
    0x00070b04 str r3, [sp]                                      |         *(sp) = r3;
    0x00070b08 ldr r3, [pc, 0x348]                               |         r3 = *(0x70e54);
    0x00070b0c mov r2, 0x90                                      |         r2 = 0x90;
    0x00070b10 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00070b14 mov r1, 0x73                                      |         r1 = 0x73;
    0x00070b18 mov r0, 0x20                                      |         r0 = 0x20;
    0x00070b1c bl 0xfc7b8                                        |         ERR_put_error ();
    0x00070b20 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x00070b24 ldr r1, [pc, 0x330]                               |         r1 = *(0x70e58);
    0x00070b28 str r3, [sp]                                      |         *(sp) = r3;
    0x00070b2c ldr r3, [pc, 0x32c]                               |         r3 = *(0x70e5c);
    0x00070b30 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00070b34 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00070b38 add r1, pc, r1                                    |         r1 = pc + r1;
    0x00070b3c mov r0, 4                                         |         r0 = 4;
    0x00070b40 bl 0xfcf84                                        |         ERR_add_error_data ();
    0x00070b44 b 0x70ac4                                         |         
                                                                 |     } while (1);
                                                                 | label_14:
    0x00070b48 mov r3, 2                                         |     r3 = 2;
                                                                 | label_5:
    0x00070b4c str r3, [r4]                                      |     *(r4) = r3;
                                                                 | label_6:
    0x00070b50 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00070b54 beq 0x70a94                                       |         goto label_0;
                                                                 |     }
    0x00070b58 mov r2, r5                                        |     r2 = r5;
    0x00070b5c ldr r1, [r4]                                      |     r1 = *(r4);
    0x00070b60 mov r0, r6                                        |     r0 = r6;
    0x00070b64 blx r7                                            |     r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00070b68 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 != r0) {
    0x00070b6c bne 0x70a90                                       |         goto label_1;
                                                                 |     }
                                                                 | label_13:
    0x00070b70 mov r0, r5                                        |     r0 = r5;
    0x00070b74 add sp, sp, 8                                     |     
    0x00070b78 pop {r4, r5, r6, r7, r8, sb, sl, pc}              |     
                                                                 | label_8:
    0x00070b7c ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00070b80 cmp r2, 6                                         |     
                                                                 |     if (r2 != 6) {
    0x00070b84 beq 0x70bbc                                       |         
    0x00070b88 cmp r2, 0x100                                     |         
                                                                 |         if (r2 == 0x100) {
    0x00070b8c beq 0x70c0c                                       |             goto label_15;
                                                                 |         }
    0x00070b90 cmp r2, 4                                         |         
                                                                 |         if (r2 == 4) {
    0x00070b94 beq 0x70bc0                                       |             goto label_4;
                                                                 |         }
    0x00070b98 mov r3, 0x78                                      |         r3 = 0x78;
    0x00070b9c str r3, [sp]                                      |         *(sp) = r3;
    0x00070ba0 ldr r3, [pc, 0x2bc]                               |         r3 = *(0x70e60);
    0x00070ba4 mov r2, 0x92                                      |         r2 = 0x92;
    0x00070ba8 add r3, pc, r3                                    |         r3 = pc + r3;
                                                                 | label_3:
    0x00070bac mov r1, 0x73                                      |         r1 = 0x73;
    0x00070bb0 mov r0, 0x20                                      |         r0 = 0x20;
    0x00070bb4 bl 0xfc7b8                                        |         ERR_put_error ();
    0x00070bb8 b 0x70ac4                                         |         goto label_2;
                                                                 |     }
    0x00070bbc mov r3, 0xa                                       |     r3 = 0xa;
                                                                 | label_4:
    0x00070bc0 add r2, r4, 0x14                                  |     r2 = r4 + 0x14;
    0x00070bc4 str r2, [sp, 4]                                   |     var_4h = r2;
    0x00070bc8 mov r2, 1                                         |     r2 = 1;
    0x00070bcc str r2, [sp]                                      |     *(sp) = r2;
    0x00070bd0 ldr r1, [r4, 0xc]                                 |     r1 = *((r4 + 0xc));
    0x00070bd4 mov r2, 0                                         |     r2 = 0;
    0x00070bd8 ldr r0, [r4, 8]                                   |     r0 = *((r4 + 8));
    0x00070bdc bl 0x6a210                                        |     r0 = BIO_lookup ();
    0x00070be0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00070be4 beq 0x70ac4                                       |         goto label_2;
                                                                 |     }
    0x00070be8 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00070bec cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00070bf0 bne 0x70c14                                       |         
    0x00070bf4 mov r3, 0x81                                      |         r3 = 0x81;
    0x00070bf8 str r3, [sp]                                      |         *(sp) = r3;
    0x00070bfc ldr r3, [pc, 0x264]                               |         r3 = *(0x70e64);
    0x00070c00 mov r2, 0x8e                                      |         r2 = 0x8e;
    0x00070c04 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00070c08 b 0x70bac                                         |         goto label_3;
                                                                 | label_15:
    0x00070c0c mov r3, 0                                         |         r3 = 0;
    0x00070c10 b 0x70bc0                                         |         goto label_4;
                                                                 |     }
    0x00070c14 str r3, [r4, 0x18]                                |     *((r4 + 0x18)) = r3;
    0x00070c18 mov r3, 3                                         |     r3 = 3;
    0x00070c1c b 0x70b4c                                         |     goto label_5;
                                                                 | label_9:
    0x00070c20 ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x00070c24 bl 0x69ca4                                        |     r0 = BIO_ADDRINFO_family ();
    0x00070c28 mov r5, r0                                        |     r5 = r0;
    0x00070c2c ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x00070c30 bl 0x69cb0                                        |     r0 = BIO_ADDRINFO_socktype ();
    0x00070c34 mov sl, r0                                        |     sl = r0;
    0x00070c38 ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x00070c3c bl 0x69cbc                                        |     BIO_ADDRINFO_protocol ();
    0x00070c40 mov r3, 0                                         |     r3 = 0;
    0x00070c44 mov r1, sl                                        |     r1 = sl;
    0x00070c48 mov r2, r0                                        |     r2 = r0;
    0x00070c4c mov r0, r5                                        |     r0 = r5;
    0x00070c50 bl 0x6c310                                        |     r0 = BIO_socket ();
    0x00070c54 cmn r0, 1                                         |     
    0x00070c58 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 1) {
    0x00070c5c bne 0x70cc0                                       |         
    0x00070c60 bl 0x4f848                                        |         errno_location ();
    0x00070c64 ldr r8, [pc, 0x200]                               |         r8 = *(0x70e68);
    0x00070c68 mov r3, 0x8d                                      |         r3 = 0x8d;
    0x00070c6c add r8, pc, r8                                    |         r8 = pc + r8;
    0x00070c70 str r3, [sp]                                      |         *(sp) = r3;
    0x00070c74 mov r1, 4                                         |         r1 = 4;
    0x00070c78 mov r3, r8                                        |         r3 = r8;
    0x00070c7c ldr r2, [r0]                                      |         r2 = *(r0);
    0x00070c80 mov r0, 2                                         |         r0 = 2;
    0x00070c84 bl 0xfc7b8                                        |         ERR_put_error ();
    0x00070c88 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x00070c8c ldr r1, [pc, 0x1dc]                               |         r1 = "_";
    0x00070c90 str r3, [sp]                                      |         *(sp) = r3;
    0x00070c94 ldr r3, [pc, 0x1d8]                               |         r3 = *(0x70e70);
    0x00070c98 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00070c9c add r3, pc, r3                                    |         r3 = pc + r3;
    0x00070ca0 add r1, pc, r1                                    |         r1 = pc + r1;
    0x00070ca4 mov r0, 4                                         |         r0 = 4;
    0x00070ca8 bl 0xfcf84                                        |         ERR_add_error_data ();
    0x00070cac mov r3, 0x91                                      |         r3 = 0x91;
    0x00070cb0 str r3, [sp]                                      |         *(sp) = r3;
    0x00070cb4 mov r2, 0x76                                      |         r2 = 0x76;
    0x00070cb8 mov r3, r8                                        |         r3 = r8;
    0x00070cbc b 0x70bac                                         |         goto label_3;
                                                                 |     }
    0x00070cc0 str r0, [r6, 0x20]                                |     *((r6 + 0x20)) = r0;
    0x00070cc4 mov r3, 4                                         |     r3 = 4;
    0x00070cc8 b 0x70b4c                                         |     goto label_5;
                                                                 | label_10:
    0x00070ccc mov r1, 0xf                                       |     r1 = 0xf;
    0x00070cd0 mov r0, r6                                        |     r0 = r6;
    0x00070cd4 bl 0x6e76c                                        |     BIO_clear_flags ();
    0x00070cd8 ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x00070cdc ldr r5, [r6, 0x20]                                |     r5 = *((r6 + 0x20));
    0x00070ce0 bl 0x69d1c                                        |     BIO_ADDRINFO_address ();
    0x00070ce4 ldr r2, [r4, 0x10]                                |     r2 = *((r4 + 0x10));
    0x00070ce8 orr r2, r2, 4                                     |     r2 |= 4;
    0x00070cec mov r1, r0                                        |     r1 = r0;
    0x00070cf0 mov r0, r5                                        |     r0 = r5;
    0x00070cf4 bl 0x6c3a0                                        |     BIO_connect ();
    0x00070cf8 str sb, [r6, 0x1c]                                |     *((r6 + 0x1c)) = sb;
    0x00070cfc subs sl, r0, 0                                    |     sl = r0 - 0;
                                                                 |     if (sl == r0) {
    0x00070d00 strne r8, [r4]                                    |         *(r4) = r8;
                                                                 |     }
                                                                 |     if (sl != r0) {
    0x00070d04 movne r5, sl                                      |         r5 = sl;
                                                                 |         goto label_16;
                                                                 |     }
                                                                 |     if (sl != r0) {
                                                                 | label_16:
    0x00070d08 bne 0x70b50                                       |         goto label_6;
                                                                 |     }
    0x00070d0c bl 0x73258                                        |     r0 = BIO_sock_should_retry ();
    0x00070d10 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 == r0) {
    0x00070d14 beq 0x70d40                                       |         goto label_17;
                                                                 |     }
    0x00070d18 mov r1, 0xc                                       |     r1 = 0xc;
    0x00070d1c mov r0, r6                                        |     r0 = r6;
    0x00070d20 bl 0x6e788                                        |     BIO_set_flags ();
    0x00070d24 mov r3, 6                                         |     r3 = 6;
    0x00070d28 str r3, [r4]                                      |     *(r4) = r3;
    0x00070d2c mov r3, 2                                         |     r3 = 2;
    0x00070d30 str r3, [r6, 0x1c]                                |     *((r6 + 0x1c)) = r3;
    0x00070d34 bl 0xfc898                                        |     ERR_clear_error ();
                                                                 |     do {
    0x00070d38 mov r5, 0                                         |         r5 = 0;
    0x00070d3c b 0x70ac4                                         |         goto label_2;
                                                                 | label_17:
    0x00070d40 ldr r0, [r4, 0x18]                                |         r0 = *((r4 + 0x18));
    0x00070d44 bl 0x69c98                                        |         r0 = BIO_ADDRINFO_next ();
    0x00070d48 cmp r0, 0                                         |         
    0x00070d4c str r0, [r4, 0x18]                                |         *((r4 + 0x18)) = r0;
                                                                 |         if (r0 != 0) {
    0x00070d50 beq 0x70d6c                                       |             
    0x00070d54 ldr r0, [r6, 0x20]                                |             r0 = *((r6 + 0x20));
    0x00070d58 bl 0x6ca28                                        |             BIO_closesocket ();
    0x00070d5c mov r3, 3                                         |             r3 = 3;
    0x00070d60 str r3, [r4]                                      |             *(r4) = r3;
    0x00070d64 bl 0xfc898                                        |             ERR_clear_error ();
    0x00070d68 b 0x70b50                                         |             goto label_6;
                                                                 |         }
    0x00070d6c bl 0x4f848                                        |         errno_location ();
    0x00070d70 ldr r8, [pc, 0x100]                               |         r8 = *(0x70e74);
    0x00070d74 mov r1, 2                                         |         r1 = 2;
    0x00070d78 add r8, pc, r8                                    |         r8 = pc + r8;
    0x00070d7c mov r3, 0xad                                      |         r3 = 0xad;
    0x00070d80 str r3, [sp]                                      |         *(sp) = r3;
    0x00070d84 mov r3, r8                                        |         r3 = r8;
    0x00070d88 ldr r2, [r0]                                      |         r2 = *(r0);
    0x00070d8c mov r0, r1                                        |         r0 = r1;
    0x00070d90 bl 0xfc7b8                                        |         ERR_put_error ();
    0x00070d94 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x00070d98 ldr r1, [pc, 0xdc]                                |         r1 = *(0x70e78);
    0x00070d9c str r3, [sp]                                      |         *(sp) = r3;
    0x00070da0 ldr r3, [pc, 0xd8]                                |         r3 = *(0x70e7c);
    0x00070da4 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00070da8 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00070dac add r1, pc, r1                                    |         r1 = pc + r1;
    0x00070db0 mov r0, 4                                         |         r0 = 4;
    0x00070db4 bl 0xfcf84                                        |         ERR_add_error_data ();
    0x00070db8 mov r3, 0xb1                                      |         r3 = 0xb1;
    0x00070dbc str r3, [sp]                                      |         *(sp) = r3;
    0x00070dc0 mov r2, 0x67                                      |         r2 = 0x67;
    0x00070dc4 mov r3, r8                                        |         r3 = r8;
    0x00070dc8 b 0x70bac                                         |         goto label_3;
                                                                 | label_12:
    0x00070dcc ldr r0, [r6, 0x20]                                |         r0 = *((r6 + 0x20));
    0x00070dd0 bl 0x6bc70                                        |         r0 = BIO_sock_error ();
    0x00070dd4 subs sl, r0, 0                                    |         sl = r0 - 0;
                                                                 |         if (sl == r0) {
    0x00070dd8 beq 0x70e50                                       |             goto label_18;
                                                                 |         }
    0x00070ddc ldr r5, [pc, 0xa0]                                |         r5 = *(0x70e80);
    0x00070de0 mov r0, r6                                        |         r0 = r6;
    0x00070de4 mov r1, 0xf                                       |         r1 = 0xf;
    0x00070de8 bl 0x6e76c                                        |         BIO_clear_flags ();
    0x00070dec add r5, pc, r5                                    |         r5 = pc + r5;
    0x00070df0 mov r1, 2                                         |         r1 = 2;
    0x00070df4 mov r3, 0xbd                                      |         r3 = 0xbd;
    0x00070df8 str r3, [sp]                                      |         *(sp) = r3;
    0x00070dfc mov r2, sl                                        |         r2 = sl;
    0x00070e00 mov r3, r5                                        |         r3 = r5;
    0x00070e04 mov r0, r1                                        |         r0 = r1;
    0x00070e08 bl 0xfc7b8                                        |         ERR_put_error ();
    0x00070e0c ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x00070e10 ldr r1, [pc, 0x70]                                |         r1 = *(0x70e84);
    0x00070e14 str r3, [sp]                                      |         *(sp) = r3;
    0x00070e18 ldr r3, [pc, 0x6c]                                |         r3 = *(0x70e88);
    0x00070e1c ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00070e20 add r3, pc, r3                                    |         r3 = pc + r3;
    0x00070e24 add r1, pc, r1                                    |         r1 = pc + r1;
    0x00070e28 mov r0, 4                                         |         r0 = 4;
    0x00070e2c bl 0xfcf84                                        |         ERR_add_error_data ();
    0x00070e30 mov r3, 0xc1                                      |         r3 = 0xc1;
    0x00070e34 str r3, [sp]                                      |         *(sp) = r3;
    0x00070e38 mov r2, 0x6e                                      |         r2 = 0x6e;
    0x00070e3c mov r3, r5                                        |         r3 = r5;
    0x00070e40 mov r1, 0x73                                      |         r1 = 0x73;
    0x00070e44 mov r0, 0x20                                      |         r0 = 0x20;
    0x00070e48 bl 0xfc7b8                                        |         ERR_put_error ();
    0x00070e4c b 0x70d38                                         |         
                                                                 |     } while (1);
                                                                 | label_18:
    0x00070e50 str r8, [r4]                                      |     *(r4) = r8;
    0x00070e54 b 0x70b50                                         |     goto label_6;
                                                                 | }
    ; 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 @ 0x8f160 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | uint32_t rotate_right32 (uint32_t value, uint32_t count) {
                                                                         |     const uint32_t mask = (CHAR_BIT * sizeof (value)) - 1;
                                                                         |     count &= mask;
                                                                         |     return (value >> count) | (value << (-count & mask));
                                                                         | }
                                                                         |  
    ; (fcn) fcn.0008f160 ()                                              | void fcn_0008f160 (int32_t arg_0h, int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int8_t var_fh;
                                                                         |     int8_t var_eh;
                                                                         |     int8_t var_dh;
                                                                         |     int32_t var_4h;
                                                                         |     int8_t var_bh;
                                                                         |     int8_t var_ah;
                                                                         |     int8_t var_9h;
                                                                         |     int32_t var_8h;
                                                                         |     int8_t var_7h;
                                                                         |     int8_t var_6h;
                                                                         |     int8_t var_5h;
                                                                         |     int32_t var_ch;
                                                                         |     int8_t var_3h;
                                                                         |     int8_t var_2h;
                                                                         |     int8_t var_1h;
                                                                         |     int32_t var_10h;
                                                                         |     int8_t var_fh_2;
                                                                         |     int8_t var_eh_2;
                                                                         |     int8_t var_dh_2;
                                                                         |     int8_t var_ch_2;
                                                                         |     int8_t var_bh_2;
                                                                         |     int8_t var_ah_2;
                                                                         |     int8_t var_9h_2;
                                                                         |     int8_t var_8h_2;
                                                                         |     int8_t var_7h_2;
                                                                         |     int8_t var_6h_2;
                                                                         |     int8_t var_5h_2;
                                                                         |     int8_t var_4h_2;
                                                                         |     int8_t var_3h_2;
                                                                         |     int8_t var_2h_2;
                                                                         |     int8_t var_1h_2;
                                                                         |     int32_t var_20h;
                                                                         |     int8_t var_fh_3;
                                                                         |     int8_t var_eh_3;
                                                                         |     int8_t var_dh_3;
                                                                         |     int8_t var_ch_3;
                                                                         |     int8_t var_bh_3;
                                                                         |     int8_t var_ah_3;
                                                                         |     int8_t var_9h_3;
                                                                         |     int8_t var_8h_3;
                                                                         |     int8_t var_7h_3;
                                                                         |     int8_t var_6h_3;
                                                                         |     int8_t var_5h_3;
                                                                         |     int8_t var_4h_3;
                                                                         |     int8_t var_3h_3;
                                                                         |     int8_t var_2h_3;
                                                                         |     int8_t var_1h_3;
                                                                         |     int32_t var_30h;
                                                                         |     int8_t var_fh_4;
                                                                         |     int8_t var_eh_4;
                                                                         |     int8_t var_dh_4;
                                                                         |     int32_t var_34h;
                                                                         |     int8_t var_bh_4;
                                                                         |     int8_t var_ah_4;
                                                                         |     int8_t var_9h_4;
                                                                         |     int32_t var_38h;
                                                                         |     int8_t var_7h_4;
                                                                         |     int8_t var_6h_4;
                                                                         |     int8_t var_5h_4;
                                                                         |     int32_t var_3ch;
                                                                         |     int8_t var_3h_4;
                                                                         |     int8_t var_2h_4;
                                                                         |     int8_t var_1h_4;
                                                                         |     int32_t var_0h_2;
                                                                         |     int32_t var_60h;
                                                                         |     int32_t var_64h;
                                                                         |     int32_t var_68h;
                                                                         |     int32_t var_6ch;
                                                                         |     int32_t var_70h;
                                                                         |     int32_t var_74h;
                                                                         |     int32_t var_78h;
                                                                         |     int32_t var_7ch;
                                                                         |     int32_t var_80h;
                                                                         |     int32_t var_84h;
                                                                         |     int32_t var_88h;
                                                                         |     int32_t var_8ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0008f160 stmdalt fp, {r6, r8, sb, sl, fp, ip, lr, pc}              |     __asm ("stmdalt fp, {r6, r8, sb, sl, fp, ip, lr, pc}");
    0x0008f164 invalid                                                   |     
    0x0008f168 invalid                                                   |     
    0x0008f16c strtls r6, [r0], -0x55b                                   |     __asm ("strtls r6, [r0], -aav.0x000000ff");
    0x0008f170 invalid                                                   |     
                                                                         |     if (? != ?) {
    0x0008f174 andeq r0, r0, r1                                          |         r0 &= r1;
                                                                         |     }
    0x0008f178 invalid                                                   |     
    0x0008f17c cdp2 p15, 0xf, c15, c15, c15, 6                           |     __asm ("cdp2 p15, 0xf, c15, c15, c15, 6");
    0x0008f180 ldmdalt r7, {r1, r2, r5, r6, r8, pc}                      |     __asm ("ldmdalt r7, {r1, r2, r5, r6, r8, pc}");
    0x0008f184 invalid                                                   |     
    0x0008f188 invalid                                                   |     
    0x0008f18c invalid                                                   |     
                                                                         |     if (? != ?) {
    0x0008f190 andeq r0, r0, r0                                          |         r0 &= r0;
                                                                         |     }
    0x0008f194 invalid                                                   |     
    0x0008f198 invalid                                                   |     
    0x0008f19c invalid                                                   |     
    0x0008f1a0 b 0x8f1c0                                                 |     goto label_1;
                                                                         | label_0:
    0x0008f1b0 ldm sp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb}          |     r0 = *(sp);
                                                                         |     r1 = *((sp + 4));
                                                                         |     r2 = *((sp + 8));
                                                                         |     r3 = *((sp + 12));
                                                                         |     r4 = *((sp + 16));
                                                                         |     r5 = *((sp + 20));
                                                                         |     r6 = *((sp + 24));
                                                                         |     r7 = *((sp + 28));
                                                                         |     r8 = *((sp + 32));
                                                                         |     sb = *((sp + 36));
    0x0008f1b4 str fp, [sp, 0x88]                                        |     var_88h = fp;
    0x0008f1b8 str ip, [sp, 0x84]                                        |     var_84h = ip;
    0x0008f1bc str lr, [sp, 0x80]                                        |     var_80h = lr;
                                                                         | label_1:
    0x0008f1c0 ldr fp, [sp, 0x3c]                                        |     fp = var_3ch;
    0x0008f1c4 ldr ip, [sp, 0x30]                                        |     ip = var_30h;
    0x0008f1c8 ldr sl, [sp, 0x34]                                        |     sl = var_34h;
    0x0008f1cc ldr lr, [sp, 0x38]                                        |     lr = var_38h;
    0x0008f1d0 str fp, [sp, 0x7c]                                        |     var_7ch = fp;
    0x0008f1d4 mov fp, 0xa                                               |     
    0x0008f1d8 b 0x8f1e0                                                 |     
                                                                         |     while (fp != fp) {
    0x0008f1e0 subs fp, fp, 1                                            |         
    0x0008f1e4 add r0, r0, r4                                            |         r0 += r4;
    0x0008f1e8 ror ip, ip, 0x10                                          |         ip = rotate_right32 (ip, 16);
    0x0008f1ec add r1, r1, r5                                            |         r1 += r5;
    0x0008f1f0 ror sl, sl, 0x10                                          |         sl = rotate_right32 (sl, 16);
    0x0008f1f4 eor ip, ip, r0, ror 16                                    |         
    0x0008f1f8 eor sl, sl, r1, ror 16                                    |         sl ^= (r1 >>> 16);
    0x0008f1fc add r8, r8, ip                                            |         r8 += ip;
    0x0008f200 ror r4, r4, 0x14                                          |         r4 = rotate_right32 (r4, 20);
    0x0008f204 add sb, sb, sl                                            |         sb += sl;
    0x0008f208 ror r5, r5, 0x14                                          |         r5 = rotate_right32 (r5, 20);
    0x0008f20c eor r4, r4, r8, ror 20                                    |         r4 ^= (r8 >>> 20);
    0x0008f210 eor r5, r5, sb, ror 20                                    |         r5 ^= (sb >>> 20);
    0x0008f214 add r0, r0, r4                                            |         r0 += r4;
    0x0008f218 ror ip, ip, 0x18                                          |         ip = rotate_right32 (ip, 24);
    0x0008f21c add r1, r1, r5                                            |         r1 += r5;
    0x0008f220 ror sl, sl, 0x18                                          |         sl = rotate_right32 (sl, 24);
    0x0008f224 eor ip, ip, r0, ror 24                                    |         
    0x0008f228 eor sl, sl, r1, ror 24                                    |         sl ^= (r1 >>> 24);
    0x0008f22c add r8, r8, ip                                            |         r8 += ip;
    0x0008f230 ror r4, r4, 0x19                                          |         r4 = rotate_right32 (r4, 25);
    0x0008f234 add sb, sb, sl                                            |         sb += sl;
    0x0008f238 ror r5, r5, 0x19                                          |         r5 = rotate_right32 (r5, 25);
    0x0008f23c str sl, [sp, 0x74]                                        |         var_74h = sl;
    0x0008f240 ldr sl, [sp, 0x7c]                                        |         sl = var_7ch;
    0x0008f244 eor r4, r4, r8, ror 25                                    |         r4 ^= (r8 >>> 25);
    0x0008f248 eor r5, r5, sb, ror 25                                    |         r5 ^= (sb >>> 25);
    0x0008f24c str r8, [sp, 0x60]                                        |         var_60h = r8;
    0x0008f250 ldr r8, [sp, 0x68]                                        |         r8 = var_68h;
    0x0008f254 add r2, r2, r6                                            |         r2 += r6;
    0x0008f258 ror lr, lr, 0x10                                          |         lr = rotate_right32 (lr, 16);
    0x0008f25c str sb, [sp, 0x64]                                        |         var_64h = sb;
    0x0008f260 ldr sb, [sp, 0x6c]                                        |         sb = var_6ch;
    0x0008f264 add r3, r3, r7                                            |         r3 += r7;
    0x0008f268 ror sl, sl, 0x10                                          |         sl = rotate_right32 (sl, 16);
    0x0008f26c eor lr, lr, r2, ror 16                                    |         lr ^= (r2 >>> 16);
    0x0008f270 eor sl, sl, r3, ror 16                                    |         sl ^= (r3 >>> 16);
    0x0008f274 add r8, r8, lr                                            |         r8 += lr;
    0x0008f278 ror r6, r6, 0x14                                          |         r6 = rotate_right32 (r6, 20);
    0x0008f27c add sb, sb, sl                                            |         sb += sl;
    0x0008f280 ror r7, r7, 0x14                                          |         r7 = rotate_right32 (r7, 20);
    0x0008f284 eor r6, r6, r8, ror 20                                    |         r6 ^= (r8 >>> 20);
    0x0008f288 eor r7, r7, sb, ror 20                                    |         r7 ^= (sb >>> 20);
    0x0008f28c add r2, r2, r6                                            |         r2 += r6;
    0x0008f290 ror lr, lr, 0x18                                          |         lr = rotate_right32 (lr, 24);
    0x0008f294 add r3, r3, r7                                            |         r3 += r7;
    0x0008f298 ror sl, sl, 0x18                                          |         sl = rotate_right32 (sl, 24);
    0x0008f29c eor lr, lr, r2, ror 24                                    |         lr ^= (r2 >>> 24);
    0x0008f2a0 eor sl, sl, r3, ror 24                                    |         sl ^= (r3 >>> 24);
    0x0008f2a4 add r8, r8, lr                                            |         r8 += lr;
    0x0008f2a8 ror r6, r6, 0x19                                          |         r6 = rotate_right32 (r6, 25);
    0x0008f2ac add sb, sb, sl                                            |         sb += sl;
    0x0008f2b0 ror r7, r7, 0x19                                          |         r7 = rotate_right32 (r7, 25);
    0x0008f2b4 eor r6, r6, r8, ror 25                                    |         r6 ^= (r8 >>> 25);
    0x0008f2b8 eor r7, r7, sb, ror 25                                    |         r7 ^= (sb >>> 25);
    0x0008f2bc add r0, r0, r5                                            |         r0 += r5;
    0x0008f2c0 ror sl, sl, 0x10                                          |         sl = rotate_right32 (sl, 16);
    0x0008f2c4 add r1, r1, r6                                            |         r1 += r6;
    0x0008f2c8 ror ip, ip, 0x10                                          |         ip = rotate_right32 (ip, 16);
    0x0008f2cc eor sl, sl, r0, ror 16                                    |         sl ^= (r0 >>> 16);
    0x0008f2d0 eor ip, ip, r1, ror 16                                    |         
    0x0008f2d4 add r8, r8, sl                                            |         r8 += sl;
    0x0008f2d8 ror r5, r5, 0x14                                          |         r5 = rotate_right32 (r5, 20);
    0x0008f2dc add sb, sb, ip                                            |         sb += ip;
    0x0008f2e0 ror r6, r6, 0x14                                          |         r6 = rotate_right32 (r6, 20);
    0x0008f2e4 eor r5, r5, r8, ror 20                                    |         r5 ^= (r8 >>> 20);
    0x0008f2e8 eor r6, r6, sb, ror 20                                    |         r6 ^= (sb >>> 20);
    0x0008f2ec add r0, r0, r5                                            |         r0 += r5;
    0x0008f2f0 ror sl, sl, 0x18                                          |         sl = rotate_right32 (sl, 24);
    0x0008f2f4 add r1, r1, r6                                            |         r1 += r6;
    0x0008f2f8 ror ip, ip, 0x18                                          |         ip = rotate_right32 (ip, 24);
    0x0008f2fc eor sl, sl, r0, ror 24                                    |         sl ^= (r0 >>> 24);
    0x0008f300 eor ip, ip, r1, ror 24                                    |         
    0x0008f304 add r8, r8, sl                                            |         r8 += sl;
    0x0008f308 ror r5, r5, 0x19                                          |         r5 = rotate_right32 (r5, 25);
    0x0008f30c str sl, [sp, 0x7c]                                        |         var_7ch = sl;
    0x0008f310 ldr sl, [sp, 0x74]                                        |         sl = var_74h;
    0x0008f314 add sb, sb, ip                                            |         sb += ip;
    0x0008f318 ror r6, r6, 0x19                                          |         r6 = rotate_right32 (r6, 25);
    0x0008f31c eor r5, r5, r8, ror 25                                    |         r5 ^= (r8 >>> 25);
    0x0008f320 eor r6, r6, sb, ror 25                                    |         r6 ^= (sb >>> 25);
    0x0008f324 str r8, [sp, 0x68]                                        |         var_68h = r8;
    0x0008f328 ldr r8, [sp, 0x60]                                        |         r8 = var_60h;
    0x0008f32c add r2, r2, r7                                            |         r2 += r7;
    0x0008f330 ror sl, sl, 0x10                                          |         sl = rotate_right32 (sl, 16);
    0x0008f334 str sb, [sp, 0x6c]                                        |         var_6ch = sb;
    0x0008f338 ldr sb, [sp, 0x64]                                        |         sb = var_64h;
    0x0008f33c add r3, r3, r4                                            |         r3 += r4;
    0x0008f340 ror lr, lr, 0x10                                          |         lr = rotate_right32 (lr, 16);
    0x0008f344 eor sl, sl, r2, ror 16                                    |         sl ^= (r2 >>> 16);
    0x0008f348 eor lr, lr, r3, ror 16                                    |         lr ^= (r3 >>> 16);
    0x0008f34c add r8, r8, sl                                            |         r8 += sl;
    0x0008f350 ror r7, r7, 0x14                                          |         r7 = rotate_right32 (r7, 20);
    0x0008f354 add sb, sb, lr                                            |         sb += lr;
    0x0008f358 ror r4, r4, 0x14                                          |         r4 = rotate_right32 (r4, 20);
    0x0008f35c eor r7, r7, r8, ror 20                                    |         r7 ^= (r8 >>> 20);
    0x0008f360 eor r4, r4, sb, ror 20                                    |         r4 ^= (sb >>> 20);
    0x0008f364 add r2, r2, r7                                            |         r2 += r7;
    0x0008f368 ror sl, sl, 0x18                                          |         sl = rotate_right32 (sl, 24);
    0x0008f36c add r3, r3, r4                                            |         r3 += r4;
    0x0008f370 ror lr, lr, 0x18                                          |         lr = rotate_right32 (lr, 24);
    0x0008f374 eor sl, sl, r2, ror 24                                    |         sl ^= (r2 >>> 24);
    0x0008f378 eor lr, lr, r3, ror 24                                    |         lr ^= (r3 >>> 24);
    0x0008f37c add r8, r8, sl                                            |         r8 += sl;
    0x0008f380 ror r7, r7, 0x19                                          |         r7 = rotate_right32 (r7, 25);
    0x0008f384 add sb, sb, lr                                            |         sb += lr;
    0x0008f388 ror r4, r4, 0x19                                          |         r4 = rotate_right32 (r4, 25);
    0x0008f38c eor r7, r7, r8, ror 25                                    |         r7 ^= (r8 >>> 25);
    0x0008f390 eor r4, r4, sb, ror 25                                    |         r4 ^= (sb >>> 25);
    0x0008f394 bne 0x8f1e0                                               |         
                                                                         |     }
    0x0008f398 ldr fp, [sp, 0x88]                                        |     fp = var_88h;
    0x0008f39c str r8, [sp, 0x60]                                        |     var_60h = r8;
    0x0008f3a0 str sb, [sp, 0x64]                                        |     var_64h = sb;
    0x0008f3a4 str ip, [sp, 0x70]                                        |     var_70h = ip;
    0x0008f3a8 str sl, [sp, 0x74]                                        |     var_74h = sl;
    0x0008f3ac str lr, [sp, 0x78]                                        |     var_78h = lr;
    0x0008f3b0 cmp fp, 0x40                                              |     
                                                                         |     if (fp >= 0x40) {
    0x0008f3b4 addlo ip, sp, 0                                           |         
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f3b8 ldrhs ip, [sp, 0x84]                                      |         ip = var_84h;
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f3bc addlo lr, sp, 0                                           |         lr += var_0h;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f3c0 ldrhs lr, [sp, 0x80]                                      |         lr = var_80h;
                                                                         |     }
    0x0008f3c4 ldr r8, [sp]                                              |     r8 = *(sp);
    0x0008f3c8 ldr sb, [sp, 4]                                           |     sb = var_4h;
    0x0008f3cc orr sl, ip, lr                                            |     sl = ip | lr;
    0x0008f3d0 tst sl, 3                                                 |     
    0x0008f3d4 ldr sl, [sp, 8]                                           |     sl = var_8h;
                                                                         |     if ((sl & 3) != 0) {
    0x0008f3d8 bne 0x8f530                                               |         goto label_2;
                                                                         |     }
    0x0008f3dc cmp fp, 0x40                                              |     
    0x0008f3e0 ldr fp, [sp, 0xc]                                         |     fp = var_ch;
    0x0008f3e4 add r0, r0, r8                                            |     r0 += r8;
    0x0008f3e8 add r1, r1, sb                                            |     r1 += sb;
                                                                         |     if (fp < 0x40) {
    0x0008f3ec ldrhs r8, [ip], 0x10                                      |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f3f0 ldrhs sb, [ip, -0xc]                                      |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f3f4 add r2, r2, sl                                            |     r2 += sl;
    0x0008f3f8 add r3, r3, fp                                            |     r3 += fp;
                                                                         |     if (fp < 0x40) {
    0x0008f3fc ldrhs sl, [ip, -8]                                        |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f400 ldrhs fp, [ip, -4]                                        |         fp = *((ip - 4));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f404 eorhs r0, r0, r8                                          |         r0 ^= r8;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f408 eorhs r1, r1, sb                                          |         r1 ^= sb;
                                                                         |     }
    0x0008f40c add r8, sp, 0x10                                          |     r8 += var_10h;
    0x0008f410 str r0, [lr], 0x10                                        |     *(lr) = r0;
                                                                         |     lr += 0x10;
                                                                         |     if (fp < 0x40) {
    0x0008f414 eorhs r2, r2, sl                                          |         r2 ^= sl;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f418 eorhs r3, r3, fp                                          |         r3 ^= fp;
                                                                         |     }
    0x0008f41c ldm r8, {r8, sb, sl, fp}                                  |     r8 = *(r8);
                                                                         |     sb = *((r8 + 4));
                                                                         |     sl = *((r8 + 8));
                                                                         |     fp = *((r8 + 12));
    0x0008f420 str r1, [lr, -0xc]                                        |     var_4h = r1;
    0x0008f424 str r2, [lr, -8]                                          |     var_8h = r2;
    0x0008f428 str r3, [lr, -4]                                          |     var_ch = r3;
    0x0008f42c add r4, r4, r8                                            |     r4 += r8;
    0x0008f430 add r5, r5, sb                                            |     r5 += sb;
                                                                         |     if (fp < 0x40) {
    0x0008f434 ldrhs r8, [ip], 0x10                                      |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f438 ldrhs sb, [ip, -0xc]                                      |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f43c add r6, r6, sl                                            |     r6 += sl;
    0x0008f440 add r7, r7, fp                                            |     r7 += fp;
                                                                         |     if (fp < 0x40) {
    0x0008f444 ldrhs sl, [ip, -8]                                        |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f448 ldrhs fp, [ip, -4]                                        |         fp = *((ip - 4));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f44c eorhs r4, r4, r8                                          |         r4 ^= r8;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f450 eorhs r5, r5, sb                                          |         r5 ^= sb;
                                                                         |     }
    0x0008f454 add r8, sp, 0x20                                          |     r8 += var_20h;
    0x0008f458 str r4, [lr], 0x10                                        |     *(lr) = r4;
                                                                         |     lr += 0x10;
                                                                         |     if (fp < 0x40) {
    0x0008f45c eorhs r6, r6, sl                                          |         r6 ^= sl;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f460 eorhs r7, r7, fp                                          |         r7 ^= fp;
                                                                         |     }
    0x0008f464 str r5, [lr, -0xc]                                        |     var_ch_2 = r5;
    0x0008f468 ldm r8, {r8, sb, sl, fp}                                  |     r8 = *(r8);
                                                                         |     sb = *((r8 + 4));
                                                                         |     sl = *((r8 + 8));
                                                                         |     fp = *((r8 + 12));
    0x0008f46c str r6, [lr, -8]                                          |     var_8h_2 = r6;
    0x0008f470 add r0, sp, 0x60                                          |     r0 += var_60h;
    0x0008f474 str r7, [lr, -4]                                          |     var_4h_2 = r7;
    0x0008f478 ldm r0, {r0, r1, r2, r3, r4, r5, r6, r7}                  |     r0 = *(r0);
                                                                         |     r1 = *((r0 + 4));
                                                                         |     r2 = *((r0 + 8));
                                                                         |     r3 = *((r0 + 12));
                                                                         |     r4 = *((r0 + 16));
                                                                         |     r5 = *((r0 + 20));
                                                                         |     r6 = *((r0 + 24));
                                                                         |     r7 = *((r0 + 28));
    0x0008f47c add r0, r0, r8                                            |     r0 += r8;
    0x0008f480 add r1, r1, sb                                            |     r1 += sb;
                                                                         |     if (fp < 0x40) {
    0x0008f484 ldrhs r8, [ip], 0x10                                      |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f488 ldrhs sb, [ip, -0xc]                                      |         sb = *((ip - 0xc));
                                                                         |     }
                                                                         |     if (fp <= 0x40) {
    0x0008f48c strhi sl, [sp, 0x68]                                      |         var_68h = sl;
                                                                         |     }
                                                                         |     if (fp <= 0x40) {
    0x0008f490 strhi fp, [sp, 0x6c]                                      |         var_6ch = fp;
                                                                         |     }
    0x0008f494 add r2, r2, sl                                            |     r2 += sl;
    0x0008f498 add r3, r3, fp                                            |     r3 += fp;
                                                                         |     if (fp < 0x40) {
    0x0008f49c ldrhs sl, [ip, -8]                                        |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4a0 ldrhs fp, [ip, -4]                                        |         fp = *((ip - 4));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4a4 eorhs r0, r0, r8                                          |         r0 ^= r8;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4a8 eorhs r1, r1, sb                                          |         r1 ^= sb;
                                                                         |     }
    0x0008f4ac add r8, sp, 0x30                                          |     r8 += var_30h;
    0x0008f4b0 str r0, [lr], 0x10                                        |     *(lr) = r0;
                                                                         |     lr += 0x10;
                                                                         |     if (fp < 0x40) {
    0x0008f4b4 eorhs r2, r2, sl                                          |         r2 ^= sl;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4b8 eorhs r3, r3, fp                                          |         r3 ^= fp;
                                                                         |     }
    0x0008f4bc str r1, [lr, -0xc]                                        |     var_ch_3 = r1;
    0x0008f4c0 ldm r8, {r8, sb, sl, fp}                                  |     r8 = *(r8);
                                                                         |     sb = *((r8 + 4));
                                                                         |     sl = *((r8 + 8));
                                                                         |     fp = *((r8 + 12));
    0x0008f4c4 str r2, [lr, -8]                                          |     var_8h_3 = r2;
    0x0008f4c8 str r3, [lr, -4]                                          |     var_4h_3 = r3;
    0x0008f4cc add r4, r4, r8                                            |     r4 += r8;
    0x0008f4d0 add r5, r5, sb                                            |     r5 += sb;
                                                                         |     if (fp <= 0x40) {
    0x0008f4d4 addhi r8, r8, 1                                           |         r8++;
                                                                         |     }
                                                                         |     if (fp <= 0x40) {
    0x0008f4d8 strhi r8, [sp, 0x30]                                      |         var_30h = r8;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4dc ldrhs r8, [ip], 0x10                                      |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4e0 ldrhs sb, [ip, -0xc]                                      |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f4e4 add r6, r6, sl                                            |     r6 += sl;
    0x0008f4e8 add r7, r7, fp                                            |     r7 += fp;
                                                                         |     if (fp < 0x40) {
    0x0008f4ec ldrhs sl, [ip, -8]                                        |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4f0 ldrhs fp, [ip, -4]                                        |         fp = *((ip - 4));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4f4 eorhs r4, r4, r8                                          |         r4 ^= r8;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f4f8 eorhs r5, r5, sb                                          |         r5 ^= sb;
                                                                         |     }
                                                                         |     if (fp == 0x40) {
    0x0008f4fc ldrne r8, [sp, 0x88]                                      |         r8 = var_88h;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f500 eorhs r6, r6, sl                                          |         r6 ^= sl;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f504 eorhs r7, r7, fp                                          |         r7 ^= fp;
                                                                         |     }
    0x0008f508 str r4, [lr], 0x10                                        |     *(lr) = r4;
                                                                         |     lr += 0x10;
    0x0008f50c str r5, [lr, -0xc]                                        |     var_34h = r5;
                                                                         |     if (fp < 0x40) {
    0x0008f510 subhs fp, r8, 0x40                                        |         
                                                                         |     }
    0x0008f514 str r6, [lr, -8]                                          |     var_38h = r6;
    0x0008f518 str r7, [lr, -4]                                          |     var_3ch = r7;
                                                                         |     if (fp > 0x40) {
    0x0008f51c bhi 0x8f1b0                                               |         goto label_0;
                                                                         |     }
                                                                         |     if (fp == 0x40) {
    0x0008f520 beq 0x8f91c                                               |         goto label_3;
                                                                         |     }
    0x0008f524 b 0x8f8f8                                                 |     goto label_4;
                                                                         | label_2:
    0x0008f530 cmp fp, 0x40                                              |     
    0x0008f534 ldr fp, [sp, 0xc]                                         |     fp = var_ch;
    0x0008f538 add r0, r0, r8                                            |     r0 += r8;
    0x0008f53c add r1, r1, sb                                            |     r1 += sb;
    0x0008f540 add r2, r2, sl                                            |     r2 += sl;
                                                                         |     if (fp >= 0x40) {
    0x0008f544 eorlo r8, r8, r8                                          |         r8 = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f548 ldrbhs r8, [ip], 0x10                                     |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f54c eorlo sb, sb, sb                                          |         sb = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f550 ldrbhs sb, [ip, -0xc]                                     |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f554 add r3, r3, fp                                            |     r3 += fp;
                                                                         |     if (fp >= 0x40) {
    0x0008f558 eorlo sl, sl, sl                                          |         sl = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f55c ldrbhs sl, [ip, -8]                                       |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f560 eorlo fp, fp, fp                                          |         
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f564 ldrbhs fp, [ip, -4]                                       |         fp = *((ip - 4));
                                                                         |     }
    0x0008f568 eor r0, r8, r0                                            |     r0 = r8 ^ r0;
    0x0008f56c eor r1, sb, r1                                            |     r1 = sb ^ r1;
                                                                         |     if (fp < 0x40) {
    0x0008f570 ldrbhs r8, [ip, -0xf]                                     |         r8 = *((ip - 0xf));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f574 ldrbhs sb, [ip, -0xb]                                     |         sb = *((ip - 0xb));
                                                                         |     }
    0x0008f578 eor r2, sl, r2                                            |     r2 = sl ^ r2;
    0x0008f57c strb r0, [lr], 0x10                                       |     *(lr) = r0;
                                                                         |     lr += 0x10;
    0x0008f580 eor r3, fp, r3                                            |     r3 = fp ^ r3;
                                                                         |     if (fp < 0x40) {
    0x0008f584 ldrbhs sl, [ip, -7]                                       |         sl = *((ip - 7));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f588 ldrbhs fp, [ip, -3]                                       |         fp = *((ip - 3));
                                                                         |     }
    0x0008f58c strb r1, [lr, -0xc]                                       |     var_4h = r1;
    0x0008f590 eor r0, r8, r0, lsr 8                                     |     r0 = r8 ^ (r0 >> 8);
    0x0008f594 strb r2, [lr, -8]                                         |     var_8h = r2;
    0x0008f598 eor r1, sb, r1, lsr 8                                     |     r1 = sb ^ (r1 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f59c ldrbhs r8, [ip, -0xe]                                     |         r8 = *((ip - 0xe));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f5a0 ldrbhs sb, [ip, -0xa]                                     |         sb = *((ip - 0xa));
                                                                         |     }
    0x0008f5a4 strb r3, [lr, -4]                                         |     var_ch = r3;
    0x0008f5a8 eor r2, sl, r2, lsr 8                                     |     r2 = sl ^ (r2 >> 8);
    0x0008f5ac strb r0, [lr, -0xf]                                       |     var_fh = r0;
    0x0008f5b0 eor r3, fp, r3, lsr 8                                     |     r3 = fp ^ (r3 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f5b4 ldrbhs sl, [ip, -6]                                       |         sl = *((ip - 6));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f5b8 ldrbhs fp, [ip, -2]                                       |         fp = *((ip - 2));
                                                                         |     }
    0x0008f5bc strb r1, [lr, -0xb]                                       |     var_bh = r1;
    0x0008f5c0 eor r0, r8, r0, lsr 8                                     |     r0 = r8 ^ (r0 >> 8);
    0x0008f5c4 strb r2, [lr, -7]                                         |     var_7h = r2;
    0x0008f5c8 eor r1, sb, r1, lsr 8                                     |     r1 = sb ^ (r1 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f5cc ldrbhs r8, [ip, -0xd]                                     |         r8 = *((ip - 0xd));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f5d0 ldrbhs sb, [ip, -9]                                       |         sb = *((ip - 9));
                                                                         |     }
    0x0008f5d4 strb r3, [lr, -3]                                         |     var_3h = r3;
    0x0008f5d8 eor r2, sl, r2, lsr 8                                     |     r2 = sl ^ (r2 >> 8);
    0x0008f5dc strb r0, [lr, -0xe]                                       |     var_eh = r0;
    0x0008f5e0 eor r3, fp, r3, lsr 8                                     |     r3 = fp ^ (r3 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f5e4 ldrbhs sl, [ip, -5]                                       |         sl = *((ip - 5));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f5e8 ldrbhs fp, [ip, -1]                                       |         fp = *((ip - 1));
                                                                         |     }
    0x0008f5ec strb r1, [lr, -0xa]                                       |     var_ah = r1;
    0x0008f5f0 strb r2, [lr, -6]                                         |     var_6h = r2;
    0x0008f5f4 eor r0, r8, r0, lsr 8                                     |     r0 = r8 ^ (r0 >> 8);
    0x0008f5f8 strb r3, [lr, -2]                                         |     var_2h = r3;
    0x0008f5fc eor r1, sb, r1, lsr 8                                     |     r1 = sb ^ (r1 >> 8);
    0x0008f600 strb r0, [lr, -0xd]                                       |     var_dh = r0;
    0x0008f604 eor r2, sl, r2, lsr 8                                     |     r2 = sl ^ (r2 >> 8);
    0x0008f608 strb r1, [lr, -9]                                         |     var_9h = r1;
    0x0008f60c eor r3, fp, r3, lsr 8                                     |     r3 = fp ^ (r3 >> 8);
    0x0008f610 strb r2, [lr, -5]                                         |     var_5h = r2;
    0x0008f614 strb r3, [lr, -1]                                         |     var_1h = r3;
    0x0008f618 add r8, sp, 0x10                                          |     r8 += var_10h;
    0x0008f61c ldm r8, {r8, sb, sl, fp}                                  |     r8 = *(r8);
                                                                         |     sb = *((r8 + 4));
                                                                         |     sl = *((r8 + 8));
                                                                         |     fp = *((r8 + 12));
    0x0008f620 add r0, sp, 0x60                                          |     r0 += var_60h;
    0x0008f624 add r4, r4, r8                                            |     r4 += r8;
    0x0008f628 add r5, r5, sb                                            |     r5 += sb;
    0x0008f62c add r6, r6, sl                                            |     r6 += sl;
                                                                         |     if (fp >= 0x40) {
    0x0008f630 eorlo r8, r8, r8                                          |         r8 = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f634 ldrbhs r8, [ip], 0x10                                     |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f638 eorlo sb, sb, sb                                          |         sb = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f63c ldrbhs sb, [ip, -0xc]                                     |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f640 add r7, r7, fp                                            |     r7 += fp;
                                                                         |     if (fp >= 0x40) {
    0x0008f644 eorlo sl, sl, sl                                          |         sl = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f648 ldrbhs sl, [ip, -8]                                       |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f64c eorlo fp, fp, fp                                          |         
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f650 ldrbhs fp, [ip, -4]                                       |         fp = *((ip - 4));
                                                                         |     }
    0x0008f654 eor r4, r8, r4                                            |     r4 = r8 ^ r4;
    0x0008f658 eor r5, sb, r5                                            |     r5 = sb ^ r5;
                                                                         |     if (fp < 0x40) {
    0x0008f65c ldrbhs r8, [ip, -0xf]                                     |         r8 = *((ip - 0xf));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f660 ldrbhs sb, [ip, -0xb]                                     |         sb = *((ip - 0xb));
                                                                         |     }
    0x0008f664 eor r6, sl, r6                                            |     r6 = sl ^ r6;
    0x0008f668 strb r4, [lr], 0x10                                       |     *(lr) = r4;
                                                                         |     lr += 0x10;
    0x0008f66c eor r7, fp, r7                                            |     r7 = fp ^ r7;
                                                                         |     if (fp < 0x40) {
    0x0008f670 ldrbhs sl, [ip, -7]                                       |         sl = *((ip - 7));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f674 ldrbhs fp, [ip, -3]                                       |         fp = *((ip - 3));
                                                                         |     }
    0x0008f678 strb r5, [lr, -0xc]                                       |     var_ch_2 = r5;
    0x0008f67c eor r4, r8, r4, lsr 8                                     |     r4 = r8 ^ (r4 >> 8);
    0x0008f680 strb r6, [lr, -8]                                         |     var_8h_2 = r6;
    0x0008f684 eor r5, sb, r5, lsr 8                                     |     r5 = sb ^ (r5 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f688 ldrbhs r8, [ip, -0xe]                                     |         r8 = *((ip - 0xe));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f68c ldrbhs sb, [ip, -0xa]                                     |         sb = *((ip - 0xa));
                                                                         |     }
    0x0008f690 strb r7, [lr, -4]                                         |     var_4h_2 = r7;
    0x0008f694 eor r6, sl, r6, lsr 8                                     |     r6 = sl ^ (r6 >> 8);
    0x0008f698 strb r4, [lr, -0xf]                                       |     var_fh_2 = r4;
    0x0008f69c eor r7, fp, r7, lsr 8                                     |     r7 = fp ^ (r7 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f6a0 ldrbhs sl, [ip, -6]                                       |         sl = *((ip - 6));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f6a4 ldrbhs fp, [ip, -2]                                       |         fp = *((ip - 2));
                                                                         |     }
    0x0008f6a8 strb r5, [lr, -0xb]                                       |     var_bh_2 = r5;
    0x0008f6ac eor r4, r8, r4, lsr 8                                     |     r4 = r8 ^ (r4 >> 8);
    0x0008f6b0 strb r6, [lr, -7]                                         |     var_7h_2 = r6;
    0x0008f6b4 eor r5, sb, r5, lsr 8                                     |     r5 = sb ^ (r5 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f6b8 ldrbhs r8, [ip, -0xd]                                     |         r8 = *((ip - 0xd));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f6bc ldrbhs sb, [ip, -9]                                       |         sb = *((ip - 9));
                                                                         |     }
    0x0008f6c0 strb r7, [lr, -3]                                         |     var_3h_2 = r7;
    0x0008f6c4 eor r6, sl, r6, lsr 8                                     |     r6 = sl ^ (r6 >> 8);
    0x0008f6c8 strb r4, [lr, -0xe]                                       |     var_eh_2 = r4;
    0x0008f6cc eor r7, fp, r7, lsr 8                                     |     r7 = fp ^ (r7 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f6d0 ldrbhs sl, [ip, -5]                                       |         sl = *((ip - 5));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f6d4 ldrbhs fp, [ip, -1]                                       |         fp = *((ip - 1));
                                                                         |     }
    0x0008f6d8 strb r5, [lr, -0xa]                                       |     var_ah_2 = r5;
    0x0008f6dc strb r6, [lr, -6]                                         |     var_6h_2 = r6;
    0x0008f6e0 eor r4, r8, r4, lsr 8                                     |     r4 = r8 ^ (r4 >> 8);
    0x0008f6e4 strb r7, [lr, -2]                                         |     var_2h_2 = r7;
    0x0008f6e8 eor r5, sb, r5, lsr 8                                     |     r5 = sb ^ (r5 >> 8);
    0x0008f6ec strb r4, [lr, -0xd]                                       |     var_dh_2 = r4;
    0x0008f6f0 eor r6, sl, r6, lsr 8                                     |     r6 = sl ^ (r6 >> 8);
    0x0008f6f4 strb r5, [lr, -9]                                         |     var_9h_2 = r5;
    0x0008f6f8 eor r7, fp, r7, lsr 8                                     |     r7 = fp ^ (r7 >> 8);
    0x0008f6fc strb r6, [lr, -5]                                         |     var_5h_2 = r6;
    0x0008f700 strb r7, [lr, -1]                                         |     var_1h_2 = r7;
    0x0008f704 add r8, sp, 0x20                                          |     r8 += var_20h;
    0x0008f708 ldm r8, {r8, sb, sl, fp}                                  |     r8 = *(r8);
                                                                         |     sb = *((r8 + 4));
                                                                         |     sl = *((r8 + 8));
                                                                         |     fp = *((r8 + 12));
    0x0008f70c ldm r0, {r0, r1, r2, r3, r4, r5, r6, r7}                  |     r0 = *(r0);
                                                                         |     r1 = *((r0 + 4));
                                                                         |     r2 = *((r0 + 8));
                                                                         |     r3 = *((r0 + 12));
                                                                         |     r4 = *((r0 + 16));
                                                                         |     r5 = *((r0 + 20));
                                                                         |     r6 = *((r0 + 24));
                                                                         |     r7 = *((r0 + 28));
                                                                         |     if (fp <= 0x40) {
    0x0008f710 strhi sl, [sp, 0x68]                                      |         var_68h = sl;
                                                                         |     }
                                                                         |     if (fp <= 0x40) {
    0x0008f714 strhi fp, [sp, 0x6c]                                      |         var_6ch = fp;
                                                                         |     }
    0x0008f718 add r0, r0, r8                                            |     r0 += r8;
    0x0008f71c add r1, r1, sb                                            |     r1 += sb;
    0x0008f720 add r2, r2, sl                                            |     r2 += sl;
                                                                         |     if (fp >= 0x40) {
    0x0008f724 eorlo r8, r8, r8                                          |         r8 = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f728 ldrbhs r8, [ip], 0x10                                     |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f72c eorlo sb, sb, sb                                          |         sb = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f730 ldrbhs sb, [ip, -0xc]                                     |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f734 add r3, r3, fp                                            |     r3 += fp;
                                                                         |     if (fp >= 0x40) {
    0x0008f738 eorlo sl, sl, sl                                          |         sl = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f73c ldrbhs sl, [ip, -8]                                       |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f740 eorlo fp, fp, fp                                          |         
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f744 ldrbhs fp, [ip, -4]                                       |         fp = *((ip - 4));
                                                                         |     }
    0x0008f748 eor r0, r8, r0                                            |     r0 = r8 ^ r0;
    0x0008f74c eor r1, sb, r1                                            |     r1 = sb ^ r1;
                                                                         |     if (fp < 0x40) {
    0x0008f750 ldrbhs r8, [ip, -0xf]                                     |         r8 = *((ip - 0xf));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f754 ldrbhs sb, [ip, -0xb]                                     |         sb = *((ip - 0xb));
                                                                         |     }
    0x0008f758 eor r2, sl, r2                                            |     r2 = sl ^ r2;
    0x0008f75c strb r0, [lr], 0x10                                       |     *(lr) = r0;
                                                                         |     lr += 0x10;
    0x0008f760 eor r3, fp, r3                                            |     r3 = fp ^ r3;
                                                                         |     if (fp < 0x40) {
    0x0008f764 ldrbhs sl, [ip, -7]                                       |         sl = *((ip - 7));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f768 ldrbhs fp, [ip, -3]                                       |         fp = *((ip - 3));
                                                                         |     }
    0x0008f76c strb r1, [lr, -0xc]                                       |     var_ch_3 = r1;
    0x0008f770 eor r0, r8, r0, lsr 8                                     |     r0 = r8 ^ (r0 >> 8);
    0x0008f774 strb r2, [lr, -8]                                         |     var_8h_3 = r2;
    0x0008f778 eor r1, sb, r1, lsr 8                                     |     r1 = sb ^ (r1 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f77c ldrbhs r8, [ip, -0xe]                                     |         r8 = *((ip - 0xe));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f780 ldrbhs sb, [ip, -0xa]                                     |         sb = *((ip - 0xa));
                                                                         |     }
    0x0008f784 strb r3, [lr, -4]                                         |     var_4h_3 = r3;
    0x0008f788 eor r2, sl, r2, lsr 8                                     |     r2 = sl ^ (r2 >> 8);
    0x0008f78c strb r0, [lr, -0xf]                                       |     var_fh_3 = r0;
    0x0008f790 eor r3, fp, r3, lsr 8                                     |     r3 = fp ^ (r3 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f794 ldrbhs sl, [ip, -6]                                       |         sl = *((ip - 6));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f798 ldrbhs fp, [ip, -2]                                       |         fp = *((ip - 2));
                                                                         |     }
    0x0008f79c strb r1, [lr, -0xb]                                       |     var_bh_3 = r1;
    0x0008f7a0 eor r0, r8, r0, lsr 8                                     |     r0 = r8 ^ (r0 >> 8);
    0x0008f7a4 strb r2, [lr, -7]                                         |     var_7h_3 = r2;
    0x0008f7a8 eor r1, sb, r1, lsr 8                                     |     r1 = sb ^ (r1 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f7ac ldrbhs r8, [ip, -0xd]                                     |         r8 = *((ip - 0xd));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f7b0 ldrbhs sb, [ip, -9]                                       |         sb = *((ip - 9));
                                                                         |     }
    0x0008f7b4 strb r3, [lr, -3]                                         |     var_3h_3 = r3;
    0x0008f7b8 eor r2, sl, r2, lsr 8                                     |     r2 = sl ^ (r2 >> 8);
    0x0008f7bc strb r0, [lr, -0xe]                                       |     var_eh_3 = r0;
    0x0008f7c0 eor r3, fp, r3, lsr 8                                     |     r3 = fp ^ (r3 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f7c4 ldrbhs sl, [ip, -5]                                       |         sl = *((ip - 5));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f7c8 ldrbhs fp, [ip, -1]                                       |         fp = *((ip - 1));
                                                                         |     }
    0x0008f7cc strb r1, [lr, -0xa]                                       |     var_ah_3 = r1;
    0x0008f7d0 strb r2, [lr, -6]                                         |     var_6h_3 = r2;
    0x0008f7d4 eor r0, r8, r0, lsr 8                                     |     r0 = r8 ^ (r0 >> 8);
    0x0008f7d8 strb r3, [lr, -2]                                         |     var_2h_3 = r3;
    0x0008f7dc eor r1, sb, r1, lsr 8                                     |     r1 = sb ^ (r1 >> 8);
    0x0008f7e0 strb r0, [lr, -0xd]                                       |     var_dh_3 = r0;
    0x0008f7e4 eor r2, sl, r2, lsr 8                                     |     r2 = sl ^ (r2 >> 8);
    0x0008f7e8 strb r1, [lr, -9]                                         |     var_9h_3 = r1;
    0x0008f7ec eor r3, fp, r3, lsr 8                                     |     r3 = fp ^ (r3 >> 8);
    0x0008f7f0 strb r2, [lr, -5]                                         |     var_5h_3 = r2;
    0x0008f7f4 strb r3, [lr, -1]                                         |     var_1h_3 = r3;
    0x0008f7f8 add r8, sp, 0x30                                          |     r8 += var_30h;
    0x0008f7fc ldm r8, {r8, sb, sl, fp}                                  |     r8 = *(r8);
                                                                         |     sb = *((r8 + 4));
                                                                         |     sl = *((r8 + 8));
                                                                         |     fp = *((r8 + 12));
    0x0008f800 add r4, r4, r8                                            |     r4 += r8;
                                                                         |     if (fp <= 0x40) {
    0x0008f804 addhi r8, r8, 1                                           |         r8++;
                                                                         |     }
                                                                         |     if (fp <= 0x40) {
    0x0008f808 strhi r8, [sp, 0x30]                                      |         var_30h = r8;
                                                                         |     }
    0x0008f80c add r5, r5, sb                                            |     r5 += sb;
    0x0008f810 add r6, r6, sl                                            |     r6 += sl;
                                                                         |     if (fp >= 0x40) {
    0x0008f814 eorlo r8, r8, r8                                          |         r8 = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f818 ldrbhs r8, [ip], 0x10                                     |         r8 = *(ip);
                                                                         |         ip += 0x10;
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f81c eorlo sb, sb, sb                                          |         sb = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f820 ldrbhs sb, [ip, -0xc]                                     |         sb = *((ip - 0xc));
                                                                         |     }
    0x0008f824 add r7, r7, fp                                            |     r7 += fp;
                                                                         |     if (fp >= 0x40) {
    0x0008f828 eorlo sl, sl, sl                                          |         sl = 0;
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f82c ldrbhs sl, [ip, -8]                                       |         sl = *((ip - 8));
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f830 eorlo fp, fp, fp                                          |         
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f834 ldrbhs fp, [ip, -4]                                       |         fp = *((ip - 4));
                                                                         |     }
    0x0008f838 eor r4, r8, r4                                            |     r4 = r8 ^ r4;
    0x0008f83c eor r5, sb, r5                                            |     r5 = sb ^ r5;
                                                                         |     if (fp < 0x40) {
    0x0008f840 ldrbhs r8, [ip, -0xf]                                     |         r8 = *((ip - 0xf));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f844 ldrbhs sb, [ip, -0xb]                                     |         sb = *((ip - 0xb));
                                                                         |     }
    0x0008f848 eor r6, sl, r6                                            |     r6 = sl ^ r6;
    0x0008f84c strb r4, [lr], 0x10                                       |     *(lr) = r4;
                                                                         |     lr += 0x10;
    0x0008f850 eor r7, fp, r7                                            |     r7 = fp ^ r7;
                                                                         |     if (fp < 0x40) {
    0x0008f854 ldrbhs sl, [ip, -7]                                       |         sl = *((ip - 7));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f858 ldrbhs fp, [ip, -3]                                       |         fp = *((ip - 3));
                                                                         |     }
    0x0008f85c strb r5, [lr, -0xc]                                       |     var_34h = r5;
    0x0008f860 eor r4, r8, r4, lsr 8                                     |     r4 = r8 ^ (r4 >> 8);
    0x0008f864 strb r6, [lr, -8]                                         |     var_38h = r6;
    0x0008f868 eor r5, sb, r5, lsr 8                                     |     r5 = sb ^ (r5 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f86c ldrbhs r8, [ip, -0xe]                                     |         r8 = *((ip - 0xe));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f870 ldrbhs sb, [ip, -0xa]                                     |         sb = *((ip - 0xa));
                                                                         |     }
    0x0008f874 strb r7, [lr, -4]                                         |     var_3ch = r7;
    0x0008f878 eor r6, sl, r6, lsr 8                                     |     r6 = sl ^ (r6 >> 8);
    0x0008f87c strb r4, [lr, -0xf]                                       |     var_fh_4 = r4;
    0x0008f880 eor r7, fp, r7, lsr 8                                     |     r7 = fp ^ (r7 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f884 ldrbhs sl, [ip, -6]                                       |         sl = *((ip - 6));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f888 ldrbhs fp, [ip, -2]                                       |         fp = *((ip - 2));
                                                                         |     }
    0x0008f88c strb r5, [lr, -0xb]                                       |     var_bh_4 = r5;
    0x0008f890 eor r4, r8, r4, lsr 8                                     |     r4 = r8 ^ (r4 >> 8);
    0x0008f894 strb r6, [lr, -7]                                         |     var_7h_4 = r6;
    0x0008f898 eor r5, sb, r5, lsr 8                                     |     r5 = sb ^ (r5 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f89c ldrbhs r8, [ip, -0xd]                                     |         r8 = *((ip - 0xd));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f8a0 ldrbhs sb, [ip, -9]                                       |         sb = *((ip - 9));
                                                                         |     }
    0x0008f8a4 strb r7, [lr, -3]                                         |     var_3h_4 = r7;
    0x0008f8a8 eor r6, sl, r6, lsr 8                                     |     r6 = sl ^ (r6 >> 8);
    0x0008f8ac strb r4, [lr, -0xe]                                       |     var_eh_4 = r4;
    0x0008f8b0 eor r7, fp, r7, lsr 8                                     |     r7 = fp ^ (r7 >> 8);
                                                                         |     if (fp < 0x40) {
    0x0008f8b4 ldrbhs sl, [ip, -5]                                       |         sl = *((ip - 5));
                                                                         |     }
                                                                         |     if (fp < 0x40) {
    0x0008f8b8 ldrbhs fp, [ip, -1]                                       |         fp = *((ip - 1));
                                                                         |     }
    0x0008f8bc strb r5, [lr, -0xa]                                       |     var_ah_4 = r5;
    0x0008f8c0 strb r6, [lr, -6]                                         |     var_6h_4 = r6;
    0x0008f8c4 eor r4, r8, r4, lsr 8                                     |     r4 = r8 ^ (r4 >> 8);
    0x0008f8c8 strb r7, [lr, -2]                                         |     var_2h_4 = r7;
    0x0008f8cc eor r5, sb, r5, lsr 8                                     |     r5 = sb ^ (r5 >> 8);
    0x0008f8d0 strb r4, [lr, -0xd]                                       |     var_dh_4 = r4;
    0x0008f8d4 eor r6, sl, r6, lsr 8                                     |     r6 = sl ^ (r6 >> 8);
    0x0008f8d8 strb r5, [lr, -9]                                         |     var_9h_4 = r5;
    0x0008f8dc eor r7, fp, r7, lsr 8                                     |     r7 = fp ^ (r7 >> 8);
    0x0008f8e0 strb r6, [lr, -5]                                         |     var_5h_4 = r6;
    0x0008f8e4 strb r7, [lr, -1]                                         |     var_1h_4 = r7;
                                                                         |     if (fp == 0x40) {
    0x0008f8e8 ldrne r8, [sp, 0x88]                                      |         r8 = var_88h;
                                                                         |     }
                                                                         |     if (fp >= 0x40) {
    0x0008f8ec subhs fp, r8, 0x40                                        |         goto label_5;
                                                                         |     }
                                                                         |     if (fp > 0x40) {
                                                                         | label_5:
    0x0008f8f0 bhi 0x8f1b0                                               |         goto label_0;
                                                                         |     }
                                                                         |     if (fp == 0x40) {
    0x0008f8f4 beq 0x8f91c                                               |         goto label_3;
                                                                         |     }
                                                                         | label_4:
    0x0008f8f8 ldr ip, [sp, 0x84]                                        |     ip = var_84h;
    0x0008f8fc add sb, sp, 0                                             |     sb += var_0h;
    0x0008f900 ldr lr, [sp, 0x80]                                        |     lr = var_80h;
                                                                         |     do {
    0x0008f904 ldrb sl, [sb], 1                                          |         sl = *(sb);
                                                                         |         sb++;
    0x0008f908 ldrb fp, [ip], 1                                          |         fp = *(ip);
                                                                         |         ip++;
    0x0008f90c subs r8, r8, 1                                            |         r8--;
    0x0008f910 eor fp, fp, sl                                            |         
    0x0008f914 strb fp, [lr], 1                                          |         *(lr) = fp;
                                                                         |         lr++;
    0x0008f918 bne 0x8f904                                               |         
                                                                         |     } while (r8 != r8);
                                                                         | label_3:
    0x0008f91c add sp, sp, 0x8c                                          |     
    0x0008f920 pop {r4, r5, r6, r7, r8, sb, sl, fp, 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 @ 0xaf5b0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000af5b0 ()                                      | void fcn_000af5b0 (int32_t arg1, int32_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000af5b0 ldr r2, [r1, 0x24]                                |     r2 = *((r1 + 0x24));
    0x000af5b4 ldr ip, [r1, 0x10]                                |     ip = *((r1 + 0x10));
    0x000af5b8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x000af5bc ldr sl, [r1]                                      |     sl = *(r1);
    0x000af5c0 ldr sb, [r1, 4]                                   |     sb = *((r1 + 4));
    0x000af5c4 ldr r8, [r1, 8]                                   |     r8 = *((r1 + 8));
    0x000af5c8 ldr r7, [r1, 0xc]                                 |     r7 = *((r1 + 0xc));
    0x000af5cc ldr r6, [r1, 0x14]                                |     r6 = *((r1 + 0x14));
    0x000af5d0 ldr r5, [r1, 0x18]                                |     r5 = *((r1 + 0x18));
    0x000af5d4 ldr r4, [r1, 0x1c]                                |     r4 = *((r1 + 0x1c));
    0x000af5d8 ldr lr, [r1, 0x20]                                |     
    0x000af5dc mov r1, 0x13                                      |     r1 = 0x13;
    0x000af5e0 mul r3, r1, r2                                    |     r3 = r1 * r2;
    0x000af5e4 add r3, r3, 0x1000000                             |     r3 += 0x1000000;
    0x000af5e8 add r3, sl, r3, asr 25                            |     r3 = sl + (r3 >> 25);
    0x000af5ec add r3, sb, r3, asr 26                            |     r3 = sb + (r3 >> 26);
    0x000af5f0 add r3, r8, r3, asr 25                            |     r3 = r8 + (r3 >> 25);
    0x000af5f4 add r3, r7, r3, asr 26                            |     r3 = r7 + (r3 >> 26);
    0x000af5f8 add r3, ip, r3, asr 25                            |     r3 = ip + (r3 >> 25);
    0x000af5fc add r3, r6, r3, asr 26                            |     r3 = r6 + (r3 >> 26);
    0x000af600 add r3, r5, r3, asr 25                            |     r3 = r5 + (r3 >> 25);
    0x000af604 add r3, r4, r3, asr 26                            |     r3 = r4 + (r3 >> 26);
    0x000af608 add r3, lr, r3, asr 25                            |     r3 = lr + (r3 >> 25);
    0x000af60c add r3, r2, r3, asr 26                            |     r3 = r2 + (r3 >> 26);
    0x000af610 asr r3, r3, 0x19                                  |     r3 >>= 0x19;
    0x000af614 mla fp, r1, r3, sl                                |     __asm ("mla fp, r1, r3, sl");
    0x000af618 bic r3, fp, 0xfc000000                            |     r3 = BIT_MASK (fp, 0xfc000000);
    0x000af61c asr r1, r3, 8                                     |     r1 = r3 >> 8;
    0x000af620 add sb, sb, fp, asr 26                            |     sb += (fp >> 26);
    0x000af624 add r8, r8, sb, asr 25                            |     r8 += (sb >> 25);
    0x000af628 strb r1, [r0, 1]                                  |     *((r0 + 1)) = r1;
    0x000af62c bic sb, sb, 0xfe000000                            |     sb = BIT_MASK (sb, 0xfe000000);
    0x000af630 asr r1, r3, 0x10                                  |     r1 = r3 >> 0x10;
    0x000af634 strb r1, [r0, 2]                                  |     *((r0 + 2)) = r1;
    0x000af638 lsl r1, sb, 2                                     |     r1 = sb << 2;
    0x000af63c strb r3, [r0]                                     |     *(r0) = r3;
    0x000af640 orr r3, r1, r3, lsr 24                            |     r3 = r1 | (r3 >> 24);
    0x000af644 strb r3, [r0, 3]                                  |     *((r0 + 3)) = r3;
    0x000af648 asr r3, sb, 6                                     |     r3 = sb >> 6;
    0x000af64c add r7, r7, r8, asr 26                            |     r7 += (r8 >> 26);
    0x000af650 strb r3, [r0, 4]                                  |     *((r0 + 4)) = r3;
    0x000af654 bic r8, r8, 0xfc000000                            |     r8 = BIT_MASK (r8, 0xfc000000);
    0x000af658 asr r3, sb, 0xe                                   |     r3 = sb >> 0xe;
    0x000af65c strb r3, [r0, 5]                                  |     *((r0 + 5)) = r3;
    0x000af660 lsl r3, r8, 3                                     |     r3 = r8 << 3;
    0x000af664 orr sb, r3, sb, lsr 22                            |     sb = r3 | (sb >> 22);
    0x000af668 asr r3, r8, 5                                     |     r3 = r8 >> 5;
    0x000af66c add ip, ip, r7, asr 25                            |     
    0x000af670 strb r3, [r0, 7]                                  |     *((r0 + 7)) = r3;
    0x000af674 bic r7, r7, 0xfe000000                            |     r7 = BIT_MASK (r7, 0xfe000000);
    0x000af678 asr r3, r8, 0xd                                   |     r3 = r8 >> 0xd;
    0x000af67c strb r3, [r0, 8]                                  |     *((r0 + 8)) = r3;
    0x000af680 lsl r3, r7, 5                                     |     r3 = r7 << 5;
    0x000af684 orr r8, r3, r8, lsr 21                            |     r8 = r3 | (r8 >> 21);
    0x000af688 asr r3, r7, 3                                     |     r3 = r7 >> 3;
    0x000af68c add r6, r6, ip, asr 26                            |     r6 += (ip >> 26);
    0x000af690 strb r3, [r0, 0xa]                                |     *((r0 + 0xa)) = r3;
    0x000af694 bic ip, ip, 0xfc000000                            |     ip = BIT_MASK (ip, 0xfc000000);
    0x000af698 asr r3, r7, 0xb                                   |     r3 = r7 >> 0xb;
    0x000af69c strb r3, [r0, 0xb]                                |     *((r0 + 0xb)) = r3;
    0x000af6a0 lsl r3, ip, 6                                     |     r3 = ip << 6;
    0x000af6a4 orr r7, r3, r7, lsr 19                            |     r7 = r3 | (r7 >> 19);
    0x000af6a8 asr r3, ip, 2                                     |     r3 = ip >> 2;
    0x000af6ac add r5, r5, r6, asr 25                            |     r5 += (r6 >> 25);
    0x000af6b0 strb r3, [r0, 0xd]                                |     *((r0 + 0xd)) = r3;
    0x000af6b4 bic r6, r6, 0xfe000000                            |     r6 = BIT_MASK (r6, 0xfe000000);
    0x000af6b8 asr r3, ip, 0xa                                   |     r3 = ip >> 0xa;
    0x000af6bc strb r3, [r0, 0xe]                                |     *((r0 + 0xe)) = r3;
    0x000af6c0 asr r3, r6, 8                                     |     r3 = r6 >> 8;
    0x000af6c4 add r4, r4, r5, asr 26                            |     r4 += (r5 >> 26);
    0x000af6c8 strb r3, [r0, 0x11]                               |     *((r0 + 0x11)) = r3;
    0x000af6cc bic r5, r5, 0xfc000000                            |     r5 = BIT_MASK (r5, 0xfc000000);
    0x000af6d0 asr r3, r6, 0x10                                  |     r3 = r6 >> 0x10;
    0x000af6d4 strb r3, [r0, 0x12]                               |     *((r0 + 0x12)) = r3;
    0x000af6d8 lsl r3, r5, 1                                     |     r3 = r5 << 1;
    0x000af6dc strb r6, [r0, 0x10]                               |     *((r0 + 0x10)) = r6;
    0x000af6e0 orr r6, r3, r6, lsr 24                            |     r6 = r3 | (r6 >> 24);
    0x000af6e4 asr r3, r5, 7                                     |     r3 = r5 >> 7;
    0x000af6e8 add lr, lr, r4, asr 25                            |     lr += (r4 >> 25);
    0x000af6ec strb r3, [r0, 0x14]                               |     *((r0 + 0x14)) = r3;
    0x000af6f0 bic r4, r4, 0xfe000000                            |     r4 = BIT_MASK (r4, 0xfe000000);
    0x000af6f4 asr r3, r5, 0xf                                   |     r3 = r5 >> 0xf;
    0x000af6f8 asr ip, ip, 0x12                                  |     
    0x000af6fc strb sb, [r0, 6]                                  |     *((r0 + 6)) = sb;
    0x000af700 strb r8, [r0, 9]                                  |     *((r0 + 9)) = r8;
    0x000af704 strb r7, [r0, 0xc]                                |     *((r0 + 0xc)) = r7;
    0x000af708 strb ip, [r0, 0xf]                                |     *((r0 + 0xf)) = ip;
    0x000af70c strb r6, [r0, 0x13]                               |     *((r0 + 0x13)) = r6;
    0x000af710 strb r3, [r0, 0x15]                               |     *((r0 + 0x15)) = r3;
    0x000af714 lsl r3, r4, 3                                     |     r3 = r4 << 3;
    0x000af718 orr r5, r3, r5, lsr 23                            |     r5 = r3 | (r5 >> 23);
    0x000af71c asr r3, r4, 5                                     |     r3 = r4 >> 5;
    0x000af720 add r2, r2, lr, asr 26                            |     r2 += (lr >> 26);
    0x000af724 strb r3, [r0, 0x17]                               |     *((r0 + 0x17)) = r3;
    0x000af728 bic lr, lr, 0xfc000000                            |     lr = BIT_MASK (lr, 0xfc000000);
    0x000af72c asr r3, r4, 0xd                                   |     r3 = r4 >> 0xd;
    0x000af730 strb r3, [r0, 0x18]                               |     *((r0 + 0x18)) = r3;
    0x000af734 lsl r3, lr, 4                                     |     r3 = lr << 4;
    0x000af738 orr r4, r3, r4, lsr 21                            |     r4 = r3 | (r4 >> 21);
    0x000af73c asr r3, lr, 4                                     |     r3 = lr >> 4;
    0x000af740 bic r2, r2, 0xfe000000                            |     r2 = BIT_MASK (r2, 0xfe000000);
    0x000af744 strb r3, [r0, 0x1a]                               |     *((r0 + 0x1a)) = r3;
    0x000af748 asr r3, lr, 0xc                                   |     r3 = lr >> 0xc;
    0x000af74c strb r3, [r0, 0x1b]                               |     *((r0 + 0x1b)) = r3;
    0x000af750 lsl r3, r2, 6                                     |     r3 = r2 << 6;
    0x000af754 orr lr, r3, lr, lsr 20                            |     lr = r3 | (lr >> 20);
    0x000af758 asr r3, r2, 2                                     |     r3 = r2 >> 2;
    0x000af75c strb r3, [r0, 0x1d]                               |     *((r0 + 0x1d)) = r3;
    0x000af760 asr r3, r2, 0xa                                   |     r3 = r2 >> 0xa;
    0x000af764 asr r2, r2, 0x12                                  |     r2 >>= 0x12;
    0x000af768 strb r5, [r0, 0x16]                               |     *((r0 + 0x16)) = r5;
    0x000af76c strb r4, [r0, 0x19]                               |     *((r0 + 0x19)) = r4;
    0x000af770 strb lr, [r0, 0x1c]                               |     
    0x000af774 strb r3, [r0, 0x1e]                               |     *((r0 + 0x1e)) = r3;
    0x000af778 strb r2, [r0, 0x1f]                               |     *((r0 + 0x1f)) = r2;
    0x000af77c pop {r4, r5, r6, r7, r8, sb, sl, fp, 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 @ 0x164a70 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.X509_LOOKUP_by_subject ()        | void X509_LOOKUP_by_subject (int32_t arg1) {
                                                 |     r0 = arg1;
    0x00164a70 str lr, [sp, -4]!                 |     
    0x00164a74 ldr lr, [r0, 8]                   |     
    0x00164a78 cmp lr, 0                         |     
                                                 |     if (lr != 0) {
    0x00164a7c beq 0x164aa4                      |         
    0x00164a80 ldr lr, [lr, 0x18]                |         
    0x00164a84 cmp lr, 0                         |         
                                                 |         if (lr == 0) {
    0x00164a88 beq 0x164aa4                      |             goto label_0;
                                                 |         }
    0x00164a8c ldr ip, [r0, 4]                   |         ip = *((r0 + 4));
    0x00164a90 cmp ip, 0                         |         
                                                 |         if (ip != 0) {
    0x00164a94 bne 0x164aa4                      |             goto label_0;
                                                 |         }
    0x00164a98 mov ip, lr                        |         
    0x00164a9c pop {lr}                          |         
    0x00164aa0 bx ip                             |         return void (*ip)() ();
                                                 |     }
                                                 | label_0:
    0x00164aa4 mov r0, 0                         |     r0 = 0;
    0x00164aa8 pop {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 @ 0x16fd84 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.X509_PUBKEY_set ()                   | void X509_PUBKEY_set (uint32_t arg1, int32_t arg2) {
                                                     |     int32_t var_0h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0016fd84 push {r0, r1, r4, r5, r6, lr}         |     
    0x0016fd88 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0016fd8c beq 0x16fe48                          |         goto label_1;
                                                     |     }
    0x0016fd90 mov r4, r0                            |     r4 = r0;
    0x0016fd94 mov r5, r1                            |     r5 = r1;
    0x0016fd98 bl 0x16fd2c                           |     r0 = X509_PUBKEY_new ();
    0x0016fd9c subs r6, r0, 0                        |     r6 = r0 - 0;
                                                     |     if (r6 == r0) {
    0x0016fda0 beq 0x16fdec                          |         goto label_2;
                                                     |     }
    0x0016fda4 ldr r3, [r5, 0xc]                     |     r3 = *((r5 + 0xc));
    0x0016fda8 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x0016fdac beq 0x16fe14                          |         goto label_3;
                                                     |     }
    0x0016fdb0 ldr r3, [r3, 0x18]                    |     r3 = *((r3 + 0x18));
    0x0016fdb4 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x0016fdb8 beq 0x16fdfc                          |         goto label_4;
                                                     |     }
    0x0016fdbc mov r1, r5                            |     r1 = r5;
    0x0016fdc0 blx r3                                |     r0 = uint32_t (*r3)(uint32_t) (r1);
    0x0016fdc4 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x0016fdc8 bne 0x16fe2c                          |         goto label_5;
                                                     |     }
    0x0016fdcc mov r3, 0x4a                          |     r3 = 0x4a;
    0x0016fdd0 str r3, [sp]                          |     *(sp) = r3;
    0x0016fdd4 ldr r3, [pc, 0x74]                    |     r3 = *(0x16fe4c);
    0x0016fdd8 mov r2, 0x7e                          |     r2 = 0x7e;
    0x0016fddc add r3, pc, r3                        |     r3 = pc + r3;
                                                     |     do {
                                                     | label_0:
    0x0016fde0 mov r1, 0x78                          |         r1 = 0x78;
    0x0016fde4 mov r0, 0xb                           |         r0 = 0xb;
    0x0016fde8 bl 0xfc7b8                            |         ERR_put_error ();
                                                     | label_2:
    0x0016fdec mov r0, r6                            |         r0 = r6;
    0x0016fdf0 bl 0x16fd58                           |         X509_PUBKEY_free ();
    0x0016fdf4 mov r0, 0                             |         r0 = 0;
    0x0016fdf8 b 0x16fe48                            |         goto label_1;
                                                     | label_4:
    0x0016fdfc mov r3, 0x4e                          |         r3 = 0x4e;
    0x0016fe00 str r3, [sp]                          |         *(sp) = r3;
    0x0016fe04 ldr r3, [pc, 0x48]                    |         r3 = *(0x16fe50);
    0x0016fe08 mov r2, 0x7c                          |         r2 = 0x7c;
    0x0016fe0c add r3, pc, r3                        |         r3 = pc + r3;
    0x0016fe10 b 0x16fde0                            |         
                                                     |     } while (1);
                                                     | label_3:
    0x0016fe14 mov r3, 0x52                          |     r3 = 0x52;
    0x0016fe18 str r3, [sp]                          |     *(sp) = r3;
    0x0016fe1c ldr r3, [pc, 0x34]                    |     r3 = *(0x16fe54);
    0x0016fe20 mov r2, 0x6f                          |     r2 = 0x6f;
    0x0016fe24 add r3, pc, r3                        |     r3 = pc + r3;
    0x0016fe28 b 0x16fde0                            |     goto label_0;
                                                     | label_5:
    0x0016fe2c ldr r0, [r4]                          |     r0 = *(r4);
    0x0016fe30 bl 0x16fd58                           |     X509_PUBKEY_free ();
    0x0016fe34 str r6, [r4]                          |     *(r4) = r6;
    0x0016fe38 mov r0, r5                            |     r0 = r5;
    0x0016fe3c str r5, [r6, 8]                       |     *((r6 + 8)) = r5;
    0x0016fe40 bl 0x10dd94                           |     EVP_PKEY_up_ref ();
    0x0016fe44 mov r0, 1                             |     r0 = 1;
                                                     | label_1:
    0x0016fe48 add sp, sp, 8                         |     
    0x0016fe4c pop {r4, r5, r6, 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 @ 0x17026c */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) sym.X509_PUBKEY_set0_param ()        | void X509_PUBKEY_set0_param (int32_t arg_10h, int32_t arg_14h, int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0017026c push {r4, r5, r6, lr}             |     
    0x00170270 ldr r5, [sp, 0x10]                |     r5 = *(arg_10h);
    0x00170274 mov r4, r0                        |     r4 = r0;
    0x00170278 ldr r0, [r0]                      |     r0 = *(r0);
    0x0017027c bl 0x66628                        |     r0 = X509_ALGOR_set0 ();
    0x00170280 cmp r0, 0                         |     
    0x00170284 popeq {r4, r5, r6, pc}            |     
    0x00170288 cmp r5, 0                         |     
                                                 |     if (r5 != 0) {
    0x0017028c beq 0x1702c8                      |         
    0x00170290 ldr r3, [r4, 4]                   |         r3 = *((r4 + 4));
    0x00170294 ldr r1, [pc, 0x34]                |         r1 = *(0x1702cc);
    0x00170298 ldr r2, [pc, 0x34]                |         r2 = *(0x1702d0);
    0x0017029c ldr r0, [r3, 8]                   |         r0 = *((r3 + 8));
    0x001702a0 add r1, pc, r1                    |         r1 = pc + r1;
    0x001702a4 bl 0x11842c                       |         CRYPTO_free ();
    0x001702a8 ldr r2, [r4, 4]                   |         r2 = *((r4 + 4));
    0x001702ac ldr r3, [sp, 0x14]                |         r3 = *(arg_14h);
    0x001702b0 str r5, [r2, 8]                   |         *((r2 + 8)) = r5;
    0x001702b4 str r3, [r2]                      |         *(r2) = r3;
    0x001702b8 ldr r3, [r2, 0xc]                 |         r3 = *(0x1702dc);
    0x001702bc bic r3, r3, 0xf                   |         r3 = BIT_MASK (r3, 0xf);
    0x001702c0 orr r3, r3, 8                     |         r3 |= 8;
    0x001702c4 str r3, [r2, 0xc]                 |         *((r2 + 0xc)) = r3;
                                                 |     }
    0x001702c8 mov r0, 1                         |     r0 = 1;
    0x001702cc pop {r4, r5, r6, pc}              |     
                                                 | }

[*] Function popen used 1 times libcrypto.so.1.1