[*] Binary protection state of libmbedcrypto.so.2.2.1

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


[*] Function mmap tear down of libmbedcrypto.so.2.2.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/libmbedcrypto.so.2.2.1 @ 0x926c */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) entry.fini0 ()           | void entry_fini0 () {
    0x0000926c ldr r3, [pc, 0x68]    |     r3 = *(0x92d8);
    0x00009270 push {r4, lr}         |     
    0x00009274 ldr r4, [pc, 0x64]    |     r4 = $d;
    0x00009278 add r3, pc, r3        |     r3 = pc + r3;
    0x0000927c ldrb r3, [r3]         |     r3 = *(r3);
    0x00009280 add r4, pc, r4        |     r4 = pc + r4;
    0x00009284 cmp r3, 0             |     
    0x00009288 popne {r4, pc}        |     
    0x0000928c ldr r3, [pc, 0x50]    |     r3 = *(0x92e0);
    0x00009290 ldr r3, [r4, r3]      |     r3 = $d;
    0x00009294 cmp r3, 0             |     
                                     |     if (r3 != 0) {
    0x00009298 beq 0x92a8            |         
    0x0000929c ldr r3, [pc, 0x44]    |         r3 = *(0x92e4);
    0x000092a0 ldr r0, [pc, r3]      |         r0 = *(0x000092a8);
    0x000092a4 bl 0x8598             |         cxa_finalize ();
                                     |     }
    0x000092a8 bl 0x91b0             |     entry0 ();
    0x000092ac ldr r3, [pc, 0x38]    |     r3 = *(0x92e8);
    0x000092b0 ldr r3, [r4, r3]      |     r3 = *((r4 + r3));
    0x000092b4 cmp r3, 0             |     
                                     |     if (r3 != 0) {
    0x000092b8 beq 0x92c8            |         
    0x000092bc ldr r0, [pc, 0x2c]    |         r0 = *(0x92ec);
    0x000092c0 add r0, pc, r0        |         r0 = pc + r0;
    0x000092c4 bl 0x88ec             |         loc_imp_deregister_frame_info ();
                                     |     }
    0x000092c8 ldr r3, [pc, 0x24]    |     r3 = *(0x92f0);
    0x000092cc mov r2, 1             |     r2 = 1;
    0x000092d0 add r3, pc, r3        |     r3 = pc + r3;
    0x000092d4 strb r2, [r3]         |     *(r3) = r2;
    0x000092d8 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/libmbedcrypto.so.2.2.1 @ 0x1bfe0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ecp_mod_p192 ()                                  | void ecp_mod_p192 (int32_t arg1) {
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_ch;
                                                                 |     r0 = arg1;
    0x0001bfe0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001bfe4 mov r1, 0xc                                       |     r1 = 0xc;
    0x0001bfe8 sub sp, sp, 0xc                                   |     
    0x0001bfec mov r4, r0                                        |     r4 = r0;
    0x0001bff0 bl 0x8220                                         |     r0 = fcn_00008220 ();
    0x0001bff4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001bff8 bne 0x1c1e8                                       |         goto label_0;
                                                                 |     }
    0x0001bffc ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x0001c000 mov r1, r0                                        |     r1 = r0;
    0x0001c004 ldr r6, [r2, 0x18]                                |     r6 = *((r2 + 0x18));
    0x0001c008 ldr r5, [r2]                                      |     r5 = *(r2);
    0x0001c00c ldr ip, [r2, 4]                                   |     ip = *((r2 + 4));
    0x0001c010 add r5, r5, r6                                    |     r5 += r6;
    0x0001c014 cmp r5, r6                                        |     
                                                                 |     if (r5 < r6) {
    0x0001c018 movhs r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r5 >= r6) {
    0x0001c01c movlo r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0001c020 ldr lr, [r2, 0x28]                                |     
    0x0001c024 adds ip, ip, r3                                   |     
    0x0001c028 ldr r3, [r2, 0x1c]                                |     r3 = *((r2 + 0x1c));
    0x0001c02c add r7, r5, lr                                    |     r7 = r5 + lr;
                                                                 |     if (ip < ip) {
    0x0001c030 movhs r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x0001c034 adds ip, ip, r3                                   |     
                                                                 |     if (ip < ip) {
    0x0001c038 movhs r8, 1                                       |         r8 = 1;
                                                                 |     }
                                                                 |     if (ip >= ip) {
    0x0001c03c movlo r8, 0                                       |         r8 = 0;
                                                                 |     }
    0x0001c040 cmp r7, lr                                        |     
    0x0001c044 ldr r4, [r4, 4]                                   |     r4 = *((r4 + 4));
    0x0001c048 str r5, [r2]                                      |     *(r2) = r5;
                                                                 |     if (r7 < lr) {
    0x0001c04c movhs r5, 0                                       |         r5 = 0;
                                                                 |     }
                                                                 |     if (r7 >= lr) {
    0x0001c050 movlo r5, 1                                       |         r5 = 1;
                                                                 |     }
    0x0001c054 adds ip, ip, r5                                   |     
                                                                 |     if (ip < ip) {
    0x0001c058 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
    0x0001c05c ldr r5, [r2, 0x2c]                                |     r5 = *((r2 + 0x2c));
                                                                 |     if (ip >= ip) {
    0x0001c060 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c064 add r1, r1, sb                                    |     r1 += sb;
    0x0001c068 add r1, r1, r8                                    |     r1 += r8;
    0x0001c06c ldr r8, [r2, 8]                                   |     r8 = *((r2 + 8));
    0x0001c070 add ip, ip, r5                                    |     
    0x0001c074 cmp ip, r5                                        |     
                                                                 |     if (ip >= r5) {
    0x0001c078 addlo r1, r1, 1                                   |         r1++;
                                                                 |     }
    0x0001c07c ldr sb, [r2, 0xc]                                 |     sb = *((r2 + 0xc));
    0x0001c080 adds r1, r1, r8                                   |     r1 += r8;
    0x0001c084 stm r2, {r7, ip}                                  |     *(r2) = r7;
                                                                 |     *((r2 + 4)) = ip;
    0x0001c088 ldr r7, [r2, 0x20]                                |     r7 = *((r2 + 0x20));
    0x0001c08c mov ip, 0                                         |     
                                                                 |     if (r1 < r1) {
    0x0001c090 movhs ip, 1                                       |         
                                                                 |     }
    0x0001c094 adds sb, ip, sb                                   |     sb = ip + sb;
    0x0001c098 str r1, [r2, 8]                                   |     *((r2 + 8)) = r1;
    0x0001c09c mov r8, 0                                         |     r8 = 0;
                                                                 |     if (sb < ip) {
    0x0001c0a0 movhs r8, 1                                       |         r8 = 1;
                                                                 |     }
    0x0001c0a4 adds r1, r1, r6                                   |     r1 += r6;
                                                                 |     if (r1 < r1) {
    0x0001c0a8 movhs ip, 1                                       |         
                                                                 |     }
                                                                 |     if (r1 >= r1) {
    0x0001c0ac movlo ip, 0                                       |         
                                                                 |     }
    0x0001c0b0 adds ip, ip, sb                                   |     
                                                                 |     if (ip < ip) {
    0x0001c0b4 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (ip >= ip) {
    0x0001c0b8 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c0bc adds ip, ip, r3                                   |     
                                                                 |     if (ip < ip) {
    0x0001c0c0 movhs r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (ip >= ip) {
    0x0001c0c4 movlo r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0001c0c8 ldr r6, [r2, 0x24]                                |     r6 = *((r2 + 0x24));
    0x0001c0cc adds r1, r1, r7                                   |     r1 += r7;
    0x0001c0d0 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     if (r1 < r1) {
    0x0001c0d4 movhs r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r1 >= r1) {
    0x0001c0d8 movlo r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0001c0dc adds ip, ip, r3                                   |     
    0x0001c0e0 add r1, r1, lr                                    |     r1 += lr;
                                                                 |     if (ip < ip) {
    0x0001c0e4 movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (ip >= ip) {
    0x0001c0e8 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c0ec adds ip, ip, r6                                   |     
                                                                 |     if (ip < ip) {
    0x0001c0f0 movhs sl, 1                                       |         sl = 1;
                                                                 |     }
                                                                 |     if (ip >= ip) {
    0x0001c0f4 movlo sl, 0                                       |         sl = 0;
                                                                 |     }
    0x0001c0f8 cmp r1, lr                                        |     
                                                                 |     if (r1 < lr) {
    0x0001c0fc movhs r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r1 >= lr) {
    0x0001c100 movlo r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0001c104 adds ip, ip, r3                                   |     
                                                                 |     if (ip < ip) {
    0x0001c108 movhs r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (ip >= ip) {
    0x0001c10c movlo r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0001c110 add fp, fp, r3                                    |     
    0x0001c114 add ip, ip, r5                                    |     
    0x0001c118 add fp, fp, sl                                    |     
    0x0001c11c cmp ip, r5                                        |     
                                                                 |     if (ip >= r5) {
    0x0001c120 addlo fp, fp, 1                                   |         
                                                                 |     }
    0x0001c124 add r8, fp, r8                                    |     r8 = fp + r8;
    0x0001c128 add sb, r8, sb                                    |     sb = r8 + sb;
    0x0001c12c ldr r8, [sp, 4]                                   |     r8 = var_4h;
    0x0001c130 ldr r3, [r2, 0x10]                                |     r3 = *((r2 + 0x10));
    0x0001c134 add sb, sb, r8                                    |     sb += r8;
    0x0001c138 str r1, [r2, 8]                                   |     *((r2 + 8)) = r1;
    0x0001c13c ldr r1, [r2, 0x14]                                |     r1 = *((r2 + 0x14));
    0x0001c140 adds sb, sb, r3                                   |     sb += r3;
    0x0001c144 mov r3, 0                                         |     r3 = 0;
                                                                 |     if (sb < sb) {
    0x0001c148 movhs r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0001c14c adds r3, r3, r1                                   |     r3 += r1;
    0x0001c150 mov r1, 0                                         |     r1 = 0;
                                                                 |     if (r3 < r3) {
    0x0001c154 movhs r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x0001c158 adds r7, sb, r7                                   |     r7 = sb + r7;
    0x0001c15c str ip, [r2, 0xc]                                 |     *((r2 + 0xc)) = ip;
                                                                 |     if (r7 < sb) {
    0x0001c160 movhs ip, 1                                       |         
                                                                 |     }
                                                                 |     if (r7 >= sb) {
    0x0001c164 movlo ip, 0                                       |         
                                                                 |     }
    0x0001c168 adds r3, r3, ip                                   |     r3 += ip;
    0x0001c16c add r7, lr, r7                                    |     r7 = lr + r7;
                                                                 |     if (r3 < r3) {
    0x0001c170 movhs ip, 1                                       |         
                                                                 |     }
                                                                 |     if (r3 >= r3) {
    0x0001c174 movlo ip, 0                                       |         
                                                                 |     }
    0x0001c178 adds r6, r3, r6                                   |     r6 = r3 + r6;
                                                                 |     if (r6 < r3) {
    0x0001c17c movhs r8, 1                                       |         r8 = 1;
                                                                 |     }
                                                                 |     if (r6 >= r3) {
    0x0001c180 movlo r8, 0                                       |         r8 = 0;
                                                                 |     }
    0x0001c184 cmp lr, r7                                        |     
                                                                 |     if (lr > r7) {
    0x0001c188 movls lr, 0                                       |         lr = 0;
                                                                 |     }
                                                                 |     if (lr <= r7) {
    0x0001c18c movhi lr, 1                                       |         lr = 1;
                                                                 |     }
    0x0001c190 adds r6, lr, r6                                   |     r6 = lr + r6;
                                                                 |     if (r6 < lr) {
    0x0001c194 movhs r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r6 >= lr) {
    0x0001c198 movlo r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0001c19c add r6, r6, r5                                    |     r6 += r5;
    0x0001c1a0 cmp r6, r5                                        |     
                                                                 |     if (r6 < r5) {
    0x0001c1a4 movhs r5, r3                                      |         r5 = r3;
                                                                 |     }
                                                                 |     if (r6 >= r5) {
    0x0001c1a8 addlo r5, r3, 1                                   |         r5 = r3 + 1;
                                                                 |     }
    0x0001c1ac add r1, r5, r1                                    |     r1 = r5 + r1;
    0x0001c1b0 add r4, r2, r4, lsl 2                             |     r4 = r2 + (r4 << 2);
    0x0001c1b4 add r1, r1, ip                                    |     r1 += ip;
    0x0001c1b8 add r3, r2, 0x1c                                  |     r3 = r2 + 0x1c;
    0x0001c1bc add r1, r1, r8                                    |     r1 += r8;
    0x0001c1c0 cmp r4, r3                                        |     
    0x0001c1c4 str sb, [r2, 0x10]                                |     *((r2 + 0x10)) = sb;
    0x0001c1c8 str r6, [r2, 0x14]                                |     *((r2 + 0x14)) = r6;
    0x0001c1cc str r7, [r2, 0x10]                                |     *((r2 + 0x10)) = r7;
    0x0001c1d0 str r1, [r2, 0x18]                                |     *((r2 + 0x18)) = r1;
                                                                 |     if (r4 < r3) {
    0x0001c1d4 bls 0x1c1e8                                       |         goto label_0;
                                                                 |     }
    0x0001c1d8 mov r2, 0                                         |     r2 = 0;
                                                                 |     do {
    0x0001c1dc str r2, [r3], 4                                   |         *(r3) = r2;
                                                                 |         r3 += 4;
    0x0001c1e0 cmp r4, r3                                        |         
    0x0001c1e4 bhi 0x1c1dc                                       |         
                                                                 |     } while (r4 > r3);
                                                                 | label_0:
    0x0001c1e8 add sp, sp, 0xc                                   |     
    0x0001c1ec 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/libmbedcrypto.so.2.2.1 @ 0x1d570 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ecp_mod_p192k1 ()                                | void ecp_mod_p192k1 (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     void * s1;
                                                                 |     int32_t var_44h;
                                                                 |     r0 = arg1;
    0x0001d570 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001d574 ldr r6, [r0, 4]                                   |     r6 = *((r0 + 4));
    0x0001d578 sub sp, sp, 0x44                                  |     
    0x0001d57c cmp r6, 5                                         |     
                                                                 |     if (r6 > 5) {
    0x0001d580 movls r0, 0                                       |         r0 = 0;
                                                                 |     }
                                                                 |     if (r6 < 5) {
    0x0001d584 bls 0x1d630                                       |         goto label_2;
                                                                 |     }
    0x0001d588 ldr r3, [pc, 0x188]                               |     
    0x0001d58c sub r8, r6, 6                                     |     r8 = r6 - 6;
    0x0001d590 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001d594 mov r2, 1                                         |     r2 = 1;
    0x0001d598 mov r1, 2                                         |     r1 = 2;
    0x0001d59c add r7, sp, 0x18                                  |     r7 += s1;
    0x0001d5a0 add r3, r3, 0x10                                  |     r3 = 0x1d724;
    0x0001d5a4 cmp r8, 6                                         |     
    0x0001d5a8 mov r5, r0                                        |     r5 = r0;
    0x0001d5ac str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0001d5b0 str r2, [sp]                                      |     *(sp) = r2;
    0x0001d5b4 str r1, [sp, 0x10]                                |     var_10h = r1;
    0x0001d5b8 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001d5bc str r7, [sp, 8]                                   |     var_8h = r7;
    0x0001d5c0 mov r2, 0x28                                      |     r2 = 0x28;
    0x0001d5c4 mov r1, 0                                         |     r1 = 0;
    0x0001d5c8 mov r0, r7                                        |     r0 = r7;
                                                                 |     if (r8 < 6) {
    0x0001d5cc bls 0x1d638                                       |         goto label_3;
                                                                 |     }
    0x0001d5d0 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001d5d4 ldr r4, [r5, 8]                                   |     r4 = *((r5 + 8));
    0x0001d5d8 mov r2, 0x18                                      |     r2 = 0x18;
    0x0001d5dc add r1, r4, r2                                    |     r1 = r4 + r2;
    0x0001d5e0 mov r0, r7                                        |     r0 = r7;
    0x0001d5e4 bl 0x8550                                         |     memcpy (r0, r1, r2);
    0x0001d5e8 mov r3, 8                                         |     r3 = 8;
    0x0001d5ec str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 | label_0:
    0x0001d5f0 add r2, r4, 0x14                                  |     r2 = r4 + 0x14;
    0x0001d5f4 mov r3, 6                                         |     r3 = 6;
    0x0001d5f8 mov r0, 0                                         |     r0 = 0;
                                                                 |     do {
    0x0001d5fc str r0, [r2, 4]!                                  |         *((r2 += 4)) = r0;
    0x0001d600 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x0001d604 add r3, r3, 1                                     |         r3++;
    0x0001d608 cmp r3, r1                                        |         
    0x0001d60c blo 0x1d5fc                                       |         
                                                                 |     } while (r3 <= r1);
                                                                 | label_1:
    0x0001d610 mov r4, sp                                        |     r4 = sp;
    0x0001d614 add r8, sp, 0xc                                   |     r8 += var_ch;
    0x0001d618 mov r2, r8                                        |     r2 = r8;
    0x0001d61c mov r1, r4                                        |     r1 = r4;
    0x0001d620 mov r0, r4                                        |     r0 = r4;
    0x0001d624 bl 0x8694                                         |     r0 = fcn_00008694 ();
    0x0001d628 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d62c beq 0x1d664                                       |         goto label_4;
                                                                 |     }
                                                                 | label_2:
    0x0001d630 add sp, sp, 0x44                                  |     
    0x0001d634 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | label_3:
    0x0001d638 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001d63c ldr r4, [r5, 8]                                   |     r4 = *((r5 + 8));
    0x0001d640 lsl r2, r8, 2                                     |     r2 = r8 << 2;
    0x0001d644 add r1, r4, 0x18                                  |     r1 = r4 + 0x18;
    0x0001d648 mov r0, r7                                        |     r0 = r7;
    0x0001d64c bl 0x8550                                         |     memcpy (r0, r1, r2);
    0x0001d650 cmp r6, 6                                         |     
    0x0001d654 sub r6, r6, 4                                     |     r6 -= 4;
    0x0001d658 str r6, [sp, 4]                                   |     var_4h = r6;
                                                                 |     if (r6 != 6) {
    0x0001d65c bne 0x1d5f0                                       |         goto label_0;
                                                                 |     }
    0x0001d660 b 0x1d610                                         |     goto label_1;
                                                                 | label_4:
    0x0001d664 mov r2, r4                                        |     r2 = r4;
    0x0001d668 mov r1, r5                                        |     r1 = r5;
    0x0001d66c mov r0, r5                                        |     r0 = r5;
    0x0001d670 bl 0x8b5c                                         |     r0 = fcn_00008b5c ();
    0x0001d674 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001d678 bne 0x1d630                                       |         goto label_2;
                                                                 |     }
    0x0001d67c ldr sl, [r5, 4]                                   |     sl = *((r5 + 4));
    0x0001d680 mov r2, 0x28                                      |     r2 = 0x28;
    0x0001d684 sub sb, sl, 6                                     |     sb = sl - 6;
    0x0001d688 cmp sb, 6                                         |     
    0x0001d68c mov r1, 0                                         |     r1 = 0;
    0x0001d690 mov r0, r7                                        |     r0 = r7;
                                                                 |     if (sb > 6) {
    0x0001d694 lslls fp, sb, 2                                   |         
                                                                 |     }
                                                                 |     if (sb <= 6) {
    0x0001d698 movhi fp, 0x18                                    |         
                                                                 |     }
                                                                 |     if (sb <= 6) {
    0x0001d69c movhi sb, 6                                       |         sb = 6;
                                                                 |     }
    0x0001d6a0 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001d6a4 ldr r6, [r5, 8]                                   |     r6 = *((r5 + 8));
    0x0001d6a8 mov r2, fp                                        |     r2 = fp;
    0x0001d6ac mov r0, r7                                        |     r0 = r7;
    0x0001d6b0 add r1, r6, 0x18                                  |     r1 = r6 + 0x18;
    0x0001d6b4 bl 0x8550                                         |     memcpy (r0, r1, r2);
    0x0001d6b8 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0001d6bc cmp sl, 6                                         |     
    0x0001d6c0 add r3, r3, sb                                    |     r3 += sb;
    0x0001d6c4 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     if (sl < 6) {
    0x0001d6c8 bls 0x1d6ec                                       |         goto label_5;
                                                                 |     }
    0x0001d6cc add r2, r6, 0x14                                  |     r2 = r6 + 0x14;
    0x0001d6d0 mov r3, 6                                         |     r3 = 6;
    0x0001d6d4 mov r0, 0                                         |     r0 = 0;
                                                                 |     do {
    0x0001d6d8 str r0, [r2, 4]!                                  |         *((r2 += 4)) = r0;
    0x0001d6dc ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x0001d6e0 add r3, r3, 1                                     |         r3++;
    0x0001d6e4 cmp r3, r1                                        |         
    0x0001d6e8 blo 0x1d6d8                                       |         
                                                                 |     } while (r3 <= r1);
                                                                 | label_5:
    0x0001d6ec mov r2, r8                                        |     r2 = r8;
    0x0001d6f0 mov r1, r4                                        |     r1 = r4;
    0x0001d6f4 mov r0, r4                                        |     r0 = r4;
    0x0001d6f8 bl 0x8694                                         |     r0 = fcn_00008694 ();
    0x0001d6fc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001d700 bne 0x1d630                                       |         goto label_2;
                                                                 |     }
    0x0001d704 mov r2, r4                                        |     r2 = r4;
    0x0001d708 mov r1, r5                                        |     r1 = r5;
    0x0001d70c mov r0, r5                                        |     r0 = r5;
    0x0001d710 bl 0x8b5c                                         |     fcn_00008b5c ();
    0x0001d714 b 0x1d630                                         |     goto label_2;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x1c92c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ecp_mod_p224k1 ()                                | void ecp_mod_p224k1 (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     void * s1;
                                                                 |     int32_t var_44h;
                                                                 |     r0 = arg1;
    0x0001c92c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001c930 ldr r6, [r0, 4]                                   |     r6 = *((r0 + 4));
    0x0001c934 sub sp, sp, 0x44                                  |     
    0x0001c938 cmp r6, 6                                         |     
                                                                 |     if (r6 > 6) {
    0x0001c93c movls r0, 0                                       |         r0 = 0;
                                                                 |     }
                                                                 |     if (r6 < 6) {
    0x0001c940 bls 0x1c9e8                                       |         goto label_2;
                                                                 |     }
    0x0001c944 ldr r3, [pc, 0x184]                               |     r3 = *(0x1cacc);
    0x0001c948 sub r8, r6, 7                                     |     r8 = r6 - 7;
    0x0001c94c mov r2, 1                                         |     r2 = 1;
    0x0001c950 mov r1, 2                                         |     r1 = 2;
    0x0001c954 add r7, sp, 0x18                                  |     r7 += s1;
    0x0001c958 add r3, pc, r3                                    |     r3 = pc + r3;
    0x0001c95c cmp r8, 7                                         |     
    0x0001c960 mov r5, r0                                        |     r5 = r0;
    0x0001c964 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0001c968 str r2, [sp]                                      |     *(sp) = r2;
    0x0001c96c str r1, [sp, 0x10]                                |     var_10h = r1;
    0x0001c970 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001c974 str r7, [sp, 8]                                   |     var_8h = r7;
    0x0001c978 mov r2, 0x28                                      |     r2 = 0x28;
    0x0001c97c mov r1, 0                                         |     r1 = 0;
    0x0001c980 mov r0, r7                                        |     r0 = r7;
                                                                 |     if (r8 < 7) {
    0x0001c984 bls 0x1c9f0                                       |         goto label_3;
                                                                 |     }
    0x0001c988 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001c98c ldr r4, [r5, 8]                                   |     r4 = *((r5 + 8));
    0x0001c990 mov r2, 0x1c                                      |     r2 = 0x1c;
    0x0001c994 add r1, r4, r2                                    |     r1 = r4 + r2;
    0x0001c998 mov r0, r7                                        |     r0 = r7;
    0x0001c99c bl 0x8550                                         |     memcpy (r0, r1, r2);
    0x0001c9a0 mov r3, 9                                         |     r3 = 9;
    0x0001c9a4 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 | label_0:
    0x0001c9a8 add r2, r4, 0x18                                  |     r2 = r4 + 0x18;
    0x0001c9ac mov r3, 7                                         |     r3 = 7;
    0x0001c9b0 mov r0, 0                                         |     r0 = 0;
                                                                 |     do {
    0x0001c9b4 str r0, [r2, 4]!                                  |         *((r2 += 4)) = r0;
    0x0001c9b8 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x0001c9bc add r3, r3, 1                                     |         r3++;
    0x0001c9c0 cmp r3, r1                                        |         
    0x0001c9c4 blo 0x1c9b4                                       |         
                                                                 |     } while (r3 <= r1);
                                                                 | label_1:
    0x0001c9c8 mov r4, sp                                        |     r4 = sp;
    0x0001c9cc add r8, sp, 0xc                                   |     r8 += var_ch;
    0x0001c9d0 mov r2, r8                                        |     r2 = r8;
    0x0001c9d4 mov r1, r4                                        |     r1 = r4;
    0x0001c9d8 mov r0, r4                                        |     r0 = r4;
    0x0001c9dc bl 0x8694                                         |     r0 = fcn_00008694 ();
    0x0001c9e0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001c9e4 beq 0x1ca1c                                       |         goto label_4;
                                                                 |     }
                                                                 | label_2:
    0x0001c9e8 add sp, sp, 0x44                                  |     
    0x0001c9ec pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | label_3:
    0x0001c9f0 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001c9f4 ldr r4, [r5, 8]                                   |     r4 = *((r5 + 8));
    0x0001c9f8 lsl r2, r8, 2                                     |     r2 = r8 << 2;
    0x0001c9fc add r1, r4, 0x1c                                  |     r1 = r4 + 0x1c;
    0x0001ca00 mov r0, r7                                        |     r0 = r7;
    0x0001ca04 bl 0x8550                                         |     memcpy (r0, r1, r2);
    0x0001ca08 cmp r6, 7                                         |     
    0x0001ca0c sub r6, r6, 5                                     |     r6 -= 5;
    0x0001ca10 str r6, [sp, 4]                                   |     var_4h = r6;
                                                                 |     if (r6 != 7) {
    0x0001ca14 bne 0x1c9a8                                       |         goto label_0;
                                                                 |     }
    0x0001ca18 b 0x1c9c8                                         |     goto label_1;
                                                                 | label_4:
    0x0001ca1c mov r2, r4                                        |     r2 = r4;
    0x0001ca20 mov r1, r5                                        |     r1 = r5;
    0x0001ca24 mov r0, r5                                        |     r0 = r5;
    0x0001ca28 bl 0x8b5c                                         |     r0 = fcn_00008b5c ();
    0x0001ca2c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001ca30 bne 0x1c9e8                                       |         goto label_2;
                                                                 |     }
    0x0001ca34 ldr sl, [r5, 4]                                   |     sl = *((r5 + 4));
    0x0001ca38 mov r2, 0x28                                      |     r2 = 0x28;
    0x0001ca3c sub sb, sl, 7                                     |     sb = sl - 7;
    0x0001ca40 cmp sb, 7                                         |     
    0x0001ca44 mov r1, 0                                         |     r1 = 0;
    0x0001ca48 mov r0, r7                                        |     r0 = r7;
                                                                 |     if (sb > 7) {
    0x0001ca4c lslls fp, sb, 2                                   |         
                                                                 |     }
                                                                 |     if (sb <= 7) {
    0x0001ca50 movhi fp, 0x1c                                    |         
                                                                 |     }
                                                                 |     if (sb <= 7) {
    0x0001ca54 movhi sb, 7                                       |         sb = 7;
                                                                 |     }
    0x0001ca58 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001ca5c ldr r6, [r5, 8]                                   |     r6 = *((r5 + 8));
    0x0001ca60 mov r2, fp                                        |     r2 = fp;
    0x0001ca64 mov r0, r7                                        |     r0 = r7;
    0x0001ca68 add r1, r6, 0x1c                                  |     r1 = r6 + 0x1c;
    0x0001ca6c bl 0x8550                                         |     memcpy (r0, r1, r2);
    0x0001ca70 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0001ca74 cmp sl, 7                                         |     
    0x0001ca78 add r3, r3, sb                                    |     r3 += sb;
    0x0001ca7c str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     if (sl < 7) {
    0x0001ca80 bls 0x1caa4                                       |         goto label_5;
                                                                 |     }
    0x0001ca84 add r2, r6, 0x18                                  |     r2 = r6 + 0x18;
    0x0001ca88 mov r3, 7                                         |     r3 = 7;
    0x0001ca8c mov r0, 0                                         |     r0 = 0;
                                                                 |     do {
    0x0001ca90 str r0, [r2, 4]!                                  |         *((r2 += 4)) = r0;
    0x0001ca94 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x0001ca98 add r3, r3, 1                                     |         r3++;
    0x0001ca9c cmp r3, r1                                        |         
    0x0001caa0 blo 0x1ca90                                       |         
                                                                 |     } while (r3 <= r1);
                                                                 | label_5:
    0x0001caa4 mov r2, r8                                        |     r2 = r8;
    0x0001caa8 mov r1, r4                                        |     r1 = r4;
    0x0001caac mov r0, r4                                        |     r0 = r4;
    0x0001cab0 bl 0x8694                                         |     r0 = fcn_00008694 ();
    0x0001cab4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001cab8 bne 0x1c9e8                                       |         goto label_2;
                                                                 |     }
    0x0001cabc mov r2, r4                                        |     r2 = r4;
    0x0001cac0 mov r1, r5                                        |     r1 = r5;
    0x0001cac4 mov r0, r5                                        |     r0 = r5;
    0x0001cac8 bl 0x8b5c                                         |     fcn_00008b5c ();
    0x0001cacc b 0x1c9e8                                         |     goto label_2;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x1cad4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ecp_mod_p224 ()                                  | void ecp_mod_p224 (int32_t arg1) {
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     void * s;
                                                                 |     int32_t var_34h;
                                                                 |     r0 = arg1;
    0x0001cad4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001cad8 sub sp, sp, 0x34                                  |     
    0x0001cadc add r3, sp, 0x10                                  |     r3 += s;
    0x0001cae0 mov lr, 1                                         |     lr = 1;
    0x0001cae4 mov ip, 8                                         |     
    0x0001cae8 mov r4, r0                                        |     r4 = r0;
    0x0001caec mov r2, 0x20                                      |     r2 = 0x20;
    0x0001caf0 mov r0, r3                                        |     r0 = r3;
    0x0001caf4 mov r1, 0                                         |     r1 = 0;
    0x0001caf8 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0001cafc str lr, [sp, 4]                                   |     var_4h = lr;
    0x0001cb00 str ip, [sp, 8]                                   |     var_8h = ip;
    0x0001cb04 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001cb08 mov r0, r4                                        |     r0 = r4;
    0x0001cb0c mov r1, 0xe                                       |     r1 = 0xe;
    0x0001cb10 bl 0x8220                                         |     r0 = fcn_00008220 ();
    0x0001cb14 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 != r0) {
    0x0001cb18 bne 0x1cd5c                                       |         goto label_6;
                                                                 |     }
    0x0001cb1c ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x0001cb20 ldr r2, [r3]                                      |     r2 = *(r3);
    0x0001cb24 ldr sl, [r3, 0x1c]                                |     sl = *((r3 + 0x1c));
    0x0001cb28 ldr r1, [r3, 0x2c]                                |     r1 = *((r3 + 0x2c));
    0x0001cb2c cmp r2, sl                                        |     
    0x0001cb30 sub r0, r2, sl                                    |     r0 = r2 - sl;
                                                                 |     if (r2 < sl) {
    0x0001cb34 movhs r2, 0                                       |         r2 = 0;
                                                                 |     }
                                                                 |     if (r2 >= sl) {
    0x0001cb38 movlo r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x0001cb3c cmp r1, r0                                        |     
                                                                 |     if (r1 <= r0) {
    0x0001cb40 addhi r2, r2, 1                                   |         r2++;
                                                                 |     }
    0x0001cb44 rsb r2, r2, 0                                     |     r2 -= ;
    0x0001cb48 sub r0, r0, r1                                    |     r0 -= r1;
    0x0001cb4c cmp r2, 0                                         |     
    0x0001cb50 str r0, [r3]                                      |     *(r3) = r0;
    0x0001cb54 ldr ip, [r3, 4]                                   |     ip = *((r3 + 4));
                                                                 |     if (r2 != 0) {
    0x0001cb58 moveq r0, r5                                      |         r0 = r5;
                                                                 |     }
                                                                 |     if (r2 != 0) {
    0x0001cb5c bne 0x1cd7c                                       |         goto label_7;
                                                                 |     }
                                                                 | label_1:
    0x0001cb60 ldr r8, [r3, 0x20]                                |     r8 = *((r3 + 0x20));
    0x0001cb64 ldr r2, [r3, 0x30]                                |     r2 = *((r3 + 0x30));
    0x0001cb68 cmp r8, ip                                        |     
                                                                 |     if (r8 <= ip) {
    0x0001cb6c subhi r0, r0, 1                                   |         r0--;
                                                                 |     }
    0x0001cb70 sub ip, ip, r8                                    |     
    0x0001cb74 cmp r2, ip                                        |     
                                                                 |     if (r2 <= ip) {
    0x0001cb78 subhi r0, r0, 1                                   |         r0--;
                                                                 |     }
    0x0001cb7c lsl r0, r0, 0x18                                  |     r0 <<= 0x18;
    0x0001cb80 asr r0, r0, 0x18                                  |     r0 >>= 0x18;
    0x0001cb84 sub ip, ip, r2                                    |     
    0x0001cb88 cmp r0, 0                                         |     
    0x0001cb8c str ip, [r3, 4]                                   |     *((r3 + 4)) = ip;
    0x0001cb90 ldr r6, [r3, 8]                                   |     r6 = *((r3 + 8));
                                                                 |     if (r0 != 0) {
    0x0001cb94 moveq ip, r0                                      |         
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x0001cb98 bne 0x1cd94                                       |         goto label_8;
                                                                 |     }
                                                                 | label_2:
    0x0001cb9c ldr lr, [r3, 0x24]                                |     
    0x0001cba0 ldr r0, [r3, 0x34]                                |     r0 = *((r3 + 0x34));
    0x0001cba4 cmp lr, r6                                        |     
                                                                 |     if (lr <= r6) {
    0x0001cba8 subhi ip, ip, 1                                   |         
                                                                 |     }
    0x0001cbac sub r6, r6, lr                                    |     r6 -= lr;
    0x0001cbb0 cmp r0, r6                                        |     
                                                                 |     if (r0 <= r6) {
    0x0001cbb4 subhi ip, ip, 1                                   |         
                                                                 |     }
    0x0001cbb8 lsl ip, ip, 0x18                                  |     
    0x0001cbbc asr ip, ip, 0x18                                  |     
    0x0001cbc0 sub r6, r6, r0                                    |     r6 -= r0;
    0x0001cbc4 cmp ip, 0                                         |     
    0x0001cbc8 str r6, [r3, 8]                                   |     *((r3 + 8)) = r6;
    0x0001cbcc ldr fp, [r3, 0xc]                                 |     fp = *((r3 + 0xc));
                                                                 |     if (ip != 0) {
    0x0001cbd0 moveq r6, ip                                      |         r6 = ip;
                                                                 |     }
                                                                 |     if (ip != 0) {
    0x0001cbd4 bne 0x1cdac                                       |         goto label_9;
                                                                 |     }
                                                                 | label_3:
    0x0001cbd8 ldr ip, [r3, 0x28]                                |     ip = *((r3 + 0x28));
    0x0001cbdc ldr sb, [r3, 0x10]                                |     sb = *((r3 + 0x10));
    0x0001cbe0 cmp ip, fp                                        |     
    0x0001cbe4 sub r7, sl, ip                                    |     r7 = sl - ip;
    0x0001cbe8 add r7, r7, fp                                    |     r7 += fp;
                                                                 |     if (ip > fp) {
    0x0001cbec movls fp, 0                                       |         
                                                                 |     }
                                                                 |     if (ip <= fp) {
    0x0001cbf0 movhi fp, 1                                       |         
                                                                 |     }
    0x0001cbf4 cmp sl, r7                                        |     
    0x0001cbf8 rsbls sl, fp, 0                                   |     __asm ("rsbls sl, fp, 0");
    0x0001cbfc rsbhi sl, fp, 1                                   |     __asm ("rsbhi sl, fp, 1");
    0x0001cc00 adds r7, r1, r7                                   |     r7 = r1 + r7;
    0x0001cc04 add r6, r6, sl                                    |     r6 += sl;
                                                                 |     if (r7 < r1) {
    0x0001cc08 movhs sl, 1                                       |         sl = 1;
                                                                 |     }
                                                                 |     if (r7 >= r1) {
    0x0001cc0c movlo sl, 0                                       |         sl = 0;
                                                                 |     }
    0x0001cc10 add r6, r6, sl                                    |     r6 += sl;
    0x0001cc14 lsl r6, r6, 0x18                                  |     r6 <<= 0x18;
    0x0001cc18 asr r6, r6, 0x18                                  |     r6 >>= 0x18;
    0x0001cc1c adds sl, sb, r6                                   |     sl = sb + r6;
                                                                 |     if (sl < sb) {
    0x0001cc20 movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (sl >= sb) {
    0x0001cc24 movlo fp, 0                                       |         
                                                                 |     }
    0x0001cc28 cmp r6, 0                                         |     
    0x0001cc2c str r7, [r3, 0xc]                                 |     *((r3 + 0xc)) = r7;
                                                                 |     if (r6 < 0) {
    0x0001cc30 movge sb, fp                                      |         sb = fp;
                                                                 |     }
                                                                 |     if (r6 < 0) {
    0x0001cc34 blt 0x1cdc4                                       |         goto label_10;
                                                                 |     }
                                                                 | label_4:
    0x0001cc38 sub r6, r8, r1                                    |     r6 = r8 - r1;
    0x0001cc3c cmp r1, sl                                        |     
    0x0001cc40 add r6, r6, sl                                    |     r6 += sl;
                                                                 |     if (r1 > sl) {
    0x0001cc44 movls r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (r1 <= sl) {
    0x0001cc48 movhi r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x0001cc4c cmp r8, r6                                        |     
    0x0001cc50 rsbls r1, r1, 0                                   |     __asm ("rsbls r1, r1, 0");
    0x0001cc54 rsbhi r1, r1, 1                                   |     __asm ("rsbhi r1, r1, 1");
    0x0001cc58 adds r6, r2, r6                                   |     r6 = r2 + r6;
                                                                 |     if (r6 < r2) {
    0x0001cc5c movhs r7, 1                                       |         r7 = 1;
                                                                 |     }
                                                                 |     if (r6 >= r2) {
    0x0001cc60 movlo r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x0001cc64 and r1, r1, 0xff                                  |     r1 &= 0xff;
    0x0001cc68 add r1, r1, r7                                    |     r1 += r7;
    0x0001cc6c add r1, r1, sb                                    |     r1 += sb;
    0x0001cc70 ldr r8, [r3, 0x14]                                |     r8 = *((r3 + 0x14));
    0x0001cc74 lsl r1, r1, 0x18                                  |     r1 <<= 0x18;
    0x0001cc78 asr r1, r1, 0x18                                  |     r1 >>= 0x18;
    0x0001cc7c adds r7, r8, r1                                   |     r7 = r8 + r1;
                                                                 |     if (r7 < r8) {
    0x0001cc80 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (r7 >= r8) {
    0x0001cc84 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001cc88 cmp r1, 0                                         |     
    0x0001cc8c str r6, [r3, 0x10]                                |     *((r3 + 0x10)) = r6;
                                                                 |     if (r1 < 0) {
    0x0001cc90 movge r1, sb                                      |         r1 = sb;
                                                                 |     }
                                                                 |     if (r1 < 0) {
    0x0001cc94 blt 0x1cdd8                                       |         goto label_11;
                                                                 |     }
                                                                 | label_5:
    0x0001cc98 sub r6, lr, r2                                    |     r6 = lr - r2;
    0x0001cc9c cmp r2, r7                                        |     
    0x0001cca0 add r6, r6, r7                                    |     r6 += r7;
                                                                 |     if (r2 > r7) {
    0x0001cca4 movls r2, 0                                       |         r2 = 0;
                                                                 |     }
                                                                 |     if (r2 <= r7) {
    0x0001cca8 movhi r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x0001ccac cmp lr, r6                                        |     
    0x0001ccb0 rsbls r2, r2, 0                                   |     __asm ("rsbls r2, r2, 0");
    0x0001ccb4 rsbhi r2, r2, 1                                   |     __asm ("rsbhi r2, r2, 1");
    0x0001ccb8 adds r6, r0, r6                                   |     r6 = r0 + r6;
                                                                 |     if (r6 < r0) {
    0x0001ccbc movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r6 >= r0) {
    0x0001ccc0 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001ccc4 and r2, r2, 0xff                                  |     r2 &= 0xff;
    0x0001ccc8 add r2, r2, lr                                    |     r2 += lr;
    0x0001cccc add r2, r2, r1                                    |     r2 += r1;
    0x0001ccd0 ldr r1, [r3, 0x18]                                |     r1 = *((r3 + 0x18));
    0x0001ccd4 lsl r2, r2, 0x18                                  |     r2 <<= 0x18;
    0x0001ccd8 asr r2, r2, 0x18                                  |     r2 >>= 0x18;
    0x0001ccdc adds r7, r1, r2                                   |     r7 = r1 + r2;
                                                                 |     if (r7 < r1) {
    0x0001cce0 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r7 >= r1) {
    0x0001cce4 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001cce8 cmp r2, 0                                         |     
    0x0001ccec str r6, [r3, 0x14]                                |     *((r3 + 0x14)) = r6;
                                                                 |     if (r2 < 0) {
    0x0001ccf0 movge r2, lr                                      |         r2 = lr;
                                                                 |     }
                                                                 |     if (r2 < 0) {
    0x0001ccf4 blt 0x1cd68                                       |         goto label_12;
                                                                 |     }
                                                                 | label_0:
    0x0001ccf8 sub r1, ip, r0                                    |     r1 = ip - r0;
    0x0001ccfc cmp r0, r7                                        |     
    0x0001cd00 add r1, r1, r7                                    |     r1 += r7;
                                                                 |     if (r0 > r7) {
    0x0001cd04 movls r0, 0                                       |         r0 = 0;
                                                                 |     }
                                                                 |     if (r0 <= r7) {
    0x0001cd08 movhi r0, 1                                       |         r0 = 1;
                                                                 |     }
    0x0001cd0c cmp ip, r1                                        |     
    0x0001cd10 rsbls ip, r0, 0                                   |     __asm ("rsbls ip, r0, 0");
    0x0001cd14 rsbhi ip, r0, 1                                   |     __asm ("rsbhi ip, r0, 1");
    0x0001cd18 add r2, ip, r2                                    |     r2 = ip + r2;
    0x0001cd1c bic r0, r2, r2, asr 31                            |     r0 = BIT_MASK (r2, r2);
    0x0001cd20 str r1, [r3, 0x18]                                |     *((r3 + 0x18)) = r1;
    0x0001cd24 str r0, [r3, 0x1c]                                |     *((r3 + 0x1c)) = r0;
    0x0001cd28 ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x0001cd2c cmp r1, 8                                         |     
                                                                 |     if (r1 < 8) {
    0x0001cd30 bls 0x1cd54                                       |         goto label_13;
                                                                 |     }
    0x0001cd34 add r3, r3, 0x1c                                  |     r3 += 0x1c;
    0x0001cd38 mov r1, 8                                         |     r1 = 8;
    0x0001cd3c mov ip, 0                                         |     
                                                                 |     do {
    0x0001cd40 str ip, [r3, 4]!                                  |         *((r3 += 4)) = ip;
    0x0001cd44 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x0001cd48 add r1, r1, 1                                     |         r1++;
    0x0001cd4c cmp r0, r1                                        |         
    0x0001cd50 bhi 0x1cd40                                       |         
                                                                 |     } while (r0 > r1);
                                                                 | label_13:
    0x0001cd54 cmp r2, 0                                         |     
                                                                 |     if (r2 >= 0) {
    0x0001cd58 blt 0x1cdec                                       |         
                                                                 | label_6:
    0x0001cd5c mov r0, r5                                        |         r0 = r5;
    0x0001cd60 add sp, sp, 0x34                                  |         
    0x0001cd64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_12:
    0x0001cd68 rsb r2, r2, 0                                     |         r2 -= ;
    0x0001cd6c cmp r1, r2                                        |         
                                                                 |         if (r1 < r2) {
    0x0001cd70 movhs r2, 0                                       |             r2 = 0;
                                                                 |         }
                                                                 |         if (r1 >= r2) {
    0x0001cd74 mvnlo r2, 0                                       |             r2 = ~0;
                                                                 |         }
    0x0001cd78 b 0x1ccf8                                         |         goto label_0;
                                                                 | label_7:
    0x0001cd7c rsb r0, r2, 0                                     |         r0 = r2 - ;
    0x0001cd80 cmp ip, r0                                        |         
                                                                 |         if (ip >= r0) {
    0x0001cd84 movlo r0, 0xff                                    |             r0 = 0xff;
                                                                 |         }
                                                                 |         if (ip < r0) {
    0x0001cd88 movhs r0, 0                                       |             r0 = 0;
                                                                 |         }
    0x0001cd8c add ip, ip, r2                                    |         
    0x0001cd90 b 0x1cb60                                         |         goto label_1;
                                                                 | label_8:
    0x0001cd94 rsb ip, r0, 0                                     |         
    0x0001cd98 cmp r6, ip                                        |         
                                                                 |         if (r6 >= ip) {
    0x0001cd9c movlo ip, 0xff                                    |             
                                                                 |         }
                                                                 |         if (r6 < ip) {
    0x0001cda0 movhs ip, 0                                       |             
                                                                 |         }
    0x0001cda4 add r6, r6, r0                                    |         r6 += r0;
    0x0001cda8 b 0x1cb9c                                         |         goto label_2;
                                                                 | label_9:
    0x0001cdac rsb r6, ip, 0                                     |         r6 = ip - ;
    0x0001cdb0 cmp fp, r6                                        |         
                                                                 |         if (fp >= r6) {
    0x0001cdb4 movlo r6, 0xff                                    |             r6 = 0xff;
                                                                 |         }
                                                                 |         if (fp < r6) {
    0x0001cdb8 movhs r6, 0                                       |             r6 = 0;
                                                                 |         }
    0x0001cdbc add fp, fp, ip                                    |         
    0x0001cdc0 b 0x1cbd8                                         |         goto label_3;
                                                                 | label_10:
    0x0001cdc4 rsb r6, r6, 0                                     |         r6 -= ;
    0x0001cdc8 cmp sb, r6                                        |         
                                                                 |         if (sb < r6) {
    0x0001cdcc movhs sb, 0                                       |             sb = 0;
                                                                 |         }
                                                                 |         if (sb >= r6) {
    0x0001cdd0 mvnlo sb, 0                                       |             sb = ~0;
                                                                 |         }
    0x0001cdd4 b 0x1cc38                                         |         goto label_4;
                                                                 | label_11:
    0x0001cdd8 rsb r1, r1, 0                                     |         r1 -= ;
    0x0001cddc cmp r8, r1                                        |         
                                                                 |         if (r8 < r1) {
    0x0001cde0 movhs r1, 0                                       |             r1 = 0;
                                                                 |         }
                                                                 |         if (r8 >= r1) {
    0x0001cde4 mvnlo r1, 0                                       |             r1 = ~0;
                                                                 |         }
    0x0001cde8 b 0x1cc98                                         |         goto label_5;
                                                                 |     }
    0x0001cdec ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0001cdf0 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x0001cdf4 sub r3, r3, 0xc0000001                            |     r3 -= 0xc0000001;
    0x0001cdf8 rsb r2, r2, 0                                     |     r2 -= ;
    0x0001cdfc str r2, [r1, r3, lsl 2]                           |     offset_0 = r3 << 2;
                                                                 |     *((r1 + offset_0)) = r2;
    0x0001ce00 mov r0, r4                                        |     r0 = r4;
    0x0001ce04 mov r2, r4                                        |     r2 = r4;
    0x0001ce08 add r1, sp, 4                                     |     r1 += var_4h;
    0x0001ce0c bl 0x90b4                                         |     r0 = fcn_000090b4 ();
    0x0001ce10 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001ce14 mvneq r3, 0                                       |         r3 = ~0;
                                                                 |     }
    0x0001ce18 mov r0, r5                                        |     r0 = r5;
                                                                 |     if (r0 != 0) {
    0x0001ce1c streq r3, [r4]                                    |         *(r4) = r3;
                                                                 |     }
    0x0001ce20 add sp, sp, 0x34                                  |     
    0x0001ce24 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/libmbedcrypto.so.2.2.1 @ 0x1c1f0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ecp_mod_p384 ()                                  | void ecp_mod_p384 (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     void * s;
                                                                 |     int32_t var_54h;
                                                                 |     r0 = arg1;
    0x0001c1f0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0001c1f4 sub sp, sp, 0x54                                  |     
    0x0001c1f8 add r3, sp, 0x1c                                  |     r3 += s;
    0x0001c1fc mov ip, 0xd                                       |     
    0x0001c200 mov r6, r0                                        |     r6 = r0;
    0x0001c204 mov r2, 0x34                                      |     r2 = 0x34;
    0x0001c208 mov r0, r3                                        |     r0 = r3;
    0x0001c20c mov r1, 0                                         |     r1 = 0;
    0x0001c210 mov r5, 1                                         |     r5 = 1;
    0x0001c214 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0001c218 str ip, [sp, 0x14]                                |     var_14h = ip;
    0x0001c21c str r5, [sp, 0x10]                                |     var_10h = r5;
    0x0001c220 bl 0x8c28                                         |     memset (r0, r1, r2);
    0x0001c224 mov r0, r6                                        |     r0 = r6;
    0x0001c228 mov r1, 0x18                                      |     r1 = 0x18;
    0x0001c22c bl 0x8220                                         |     r0 = fcn_00008220 ();
    0x0001c230 subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x0001c234 str r3, [sp, 8]                                   |     var_8h = r3;
                                                                 |     if (r3 != r0) {
    0x0001c238 bne 0x1c8d0                                       |         goto label_1;
                                                                 |     }
    0x0001c23c mov lr, r3                                        |     lr = r3;
    0x0001c240 ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x0001c244 ldr r2, [r3]                                      |     r2 = *(r3);
    0x0001c248 ldr r8, [r3, 0x30]                                |     r8 = *((r3 + 0x30));
    0x0001c24c ldr ip, [r3, 0x54]                                |     ip = *((r3 + 0x54));
    0x0001c250 ldr r1, [r3, 0x50]                                |     r1 = *((r3 + 0x50));
    0x0001c254 adds r2, r2, r8                                   |     r2 += r8;
                                                                 |     if (r2 < r2) {
    0x0001c258 movhs lr, r5                                      |         lr = r5;
                                                                 |     }
    0x0001c25c adds r2, ip, r2                                   |     r2 = ip + r2;
                                                                 |     if (r2 < ip) {
    0x0001c260 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (r2 >= ip) {
    0x0001c264 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c268 adds r0, r1, r2                                   |     r0 = r1 + r2;
    0x0001c26c ldr r2, [r3, 0x5c]                                |     r2 = *((r3 + 0x5c));
    0x0001c270 add r4, r4, lr                                    |     r4 += lr;
                                                                 |     if (r0 < r1) {
    0x0001c274 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r0 >= r1) {
    0x0001c278 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c27c add r4, r4, lr                                    |     r4 += lr;
    0x0001c280 cmp r2, r0                                        |     
                                                                 |     if (r2 > r0) {
    0x0001c284 movls lr, r4                                      |         lr = r4;
                                                                 |     }
                                                                 |     if (r2 <= r0) {
    0x0001c288 subhi lr, r4, 1                                   |         lr = r4 - 1;
                                                                 |     }
    0x0001c28c cmn lr, 1                                         |     
    0x0001c290 sub r0, r0, r2                                    |     r0 -= r2;
    0x0001c294 str r0, [r3]                                      |     *(r3) = r0;
    0x0001c298 ldr r4, [r3, 4]                                   |     r4 = *((r3 + 4));
                                                                 |     if (lr == 1) {
    0x0001c29c beq 0x1c8dc                                       |         goto label_2;
                                                                 |     }
    0x0001c2a0 adds r4, r4, lr                                   |     r4 += lr;
                                                                 |     if (r4 < r4) {
    0x0001c2a4 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (r4 >= r4) {
    0x0001c2a8 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
                                                                 | label_0:
    0x0001c2ac ldr r7, [r3, 0x34]                                |     r7 = *((r3 + 0x34));
    0x0001c2b0 ldr r0, [r3, 0x58]                                |     r0 = *((r3 + 0x58));
    0x0001c2b4 adds r4, r7, r4                                   |     r4 = r7 + r4;
                                                                 |     if (r4 < r7) {
    0x0001c2b8 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= r7) {
    0x0001c2bc movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c2c0 adds r4, r0, r4                                   |     r4 = r0 + r4;
                                                                 |     if (r4 < r0) {
    0x0001c2c4 movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (r4 >= r0) {
    0x0001c2c8 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c2cc add lr, lr, sb                                    |     lr += sb;
    0x0001c2d0 adds r4, r2, r4                                   |     r4 = r2 + r4;
    0x0001c2d4 add lr, lr, r5                                    |     lr += r5;
    0x0001c2d8 and lr, lr, 0xff                                  |     lr &= 0xff;
                                                                 |     if (r4 < r2) {
    0x0001c2dc movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (r4 >= r2) {
    0x0001c2e0 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c2e4 add lr, lr, r5                                    |     lr += r5;
    0x0001c2e8 cmp r8, r4                                        |     
                                                                 |     if (r8 <= r4) {
    0x0001c2ec subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c2f0 sub r5, r4, r8                                    |     r5 = r4 - r8;
    0x0001c2f4 cmp r1, r5                                        |     
                                                                 |     if (r1 <= r5) {
    0x0001c2f8 subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c2fc ldr sb, [r3, 8]                                   |     sb = *((r3 + 8));
    0x0001c300 lsl lr, lr, 0x18                                  |     lr <<= 0x18;
    0x0001c304 asr lr, lr, 0x18                                  |     lr >>= 0x18;
    0x0001c308 adds r4, sb, lr                                   |     r4 = sb + lr;
                                                                 |     if (r4 < sb) {
    0x0001c30c movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (r4 >= sb) {
    0x0001c310 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c314 sub r5, r5, r1                                    |     r5 -= r1;
    0x0001c318 cmp lr, 0                                         |     
    0x0001c31c str r5, [r3, 4]                                   |     *((r3 + 4)) = r5;
                                                                 |     if (lr < 0) {
    0x0001c320 movge sl, fp                                      |         sl = fp;
                                                                 |     }
                                                                 |     if (lr < 0) {
    0x0001c324 bge 0x1c338                                       |         
    0x0001c328 rsb sl, lr, 0                                     |         sl = lr - ;
    0x0001c32c cmp sb, sl                                        |         
                                                                 |         if (sb < sl) {
    0x0001c330 movhs sl, 0                                       |             sl = 0;
                                                                 |         }
                                                                 |         if (sb < sl) {
    0x0001c334 mvnlo sl, 0                                       |             sl = ~0;
                                                                 |             goto label_3;
                                                                 |         }
                                                                 |     }
                                                                 | label_3:
    0x0001c338 ldr r5, [r3, 0x38]                                |     r5 = *((r3 + 0x38));
    0x0001c33c ldr sb, [r3, 0xc]                                 |     sb = *((r3 + 0xc));
    0x0001c340 adds r4, r5, r4                                   |     r4 = r5 + r4;
                                                                 |     if (r4 < r5) {
    0x0001c344 movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (r4 >= r5) {
    0x0001c348 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c34c adds r4, r2, r4                                   |     r4 = r2 + r4;
                                                                 |     if (r4 < r2) {
    0x0001c350 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= r2) {
    0x0001c354 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c358 add lr, lr, fp                                    |     lr += fp;
    0x0001c35c cmp r7, r4                                        |     
                                                                 |     if (r7 <= r4) {
    0x0001c360 subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c364 sub r4, r4, r7                                    |     r4 -= r7;
    0x0001c368 cmp ip, r4                                        |     
                                                                 |     if (ip > r4) {
    0x0001c36c movls fp, lr                                      |         
                                                                 |     }
                                                                 |     if (ip <= r4) {
    0x0001c370 subhi fp, lr, 1                                   |         
                                                                 |     }
    0x0001c374 add fp, fp, sl                                    |     
    0x0001c378 adds lr, sb, fp                                   |     lr = sb + fp;
    0x0001c37c sub r4, r4, ip                                    |     r4 -= ip;
                                                                 |     if (lr < sb) {
    0x0001c380 movhs sl, 1                                       |         sl = 1;
                                                                 |     }
                                                                 |     if (lr >= sb) {
    0x0001c384 movlo sl, 0                                       |         sl = 0;
                                                                 |     }
    0x0001c388 cmp fp, 0                                         |     
    0x0001c38c str r4, [r3, 8]                                   |     *((r3 + 8)) = r4;
                                                                 |     if (fp < 0) {
    0x0001c390 bge 0x1c3a4                                       |         
    0x0001c394 rsb sl, fp, 0                                     |         sl = fp - ;
    0x0001c398 cmp sb, sl                                        |         
                                                                 |         if (sb < sl) {
    0x0001c39c movhs sl, 0                                       |             sl = 0;
                                                                 |         }
                                                                 |         if (sb < sl) {
    0x0001c3a0 mvnlo sl, 0                                       |             sl = ~0;
                                                                 |             goto label_4;
                                                                 |         }
                                                                 |     }
                                                                 | label_4:
    0x0001c3a4 ldr r4, [r3, 0x3c]                                |     r4 = *((r3 + 0x3c));
    0x0001c3a8 ldr fp, [r3, 0x10]                                |     fp = *((r3 + 0x10));
    0x0001c3ac adds lr, r4, lr                                   |     lr = r4 + lr;
    0x0001c3b0 str r4, [sp]                                      |     *(sp) = r4;
                                                                 |     if (lr < r4) {
    0x0001c3b4 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (lr >= r4) {
    0x0001c3b8 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c3bc adds lr, r8, lr                                   |     lr = r8 + lr;
                                                                 |     if (lr < r8) {
    0x0001c3c0 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (lr >= r8) {
    0x0001c3c4 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c3c8 adds lr, r1, lr                                   |     lr = r1 + lr;
    0x0001c3cc add r4, sb, r4                                    |     r4 = sb + r4;
                                                                 |     if (lr < r1) {
    0x0001c3d0 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (lr >= r1) {
    0x0001c3d4 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c3d8 adds lr, ip, lr                                   |     lr = ip + lr;
    0x0001c3dc add r4, r4, sb                                    |     r4 += sb;
                                                                 |     if (lr < ip) {
    0x0001c3e0 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (lr >= ip) {
    0x0001c3e4 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c3e8 add r4, r4, sb                                    |     r4 += sb;
    0x0001c3ec cmp r5, lr                                        |     
                                                                 |     if (r5 <= lr) {
    0x0001c3f0 subhi r4, r4, 1                                   |         r4--;
                                                                 |     }
    0x0001c3f4 sub lr, lr, r5                                    |     lr -= r5;
    0x0001c3f8 cmp r0, lr                                        |     
                                                                 |     if (r0 <= lr) {
    0x0001c3fc subhi r4, r4, 1                                   |         r4--;
                                                                 |     }
    0x0001c400 sub lr, lr, r0                                    |     lr -= r0;
    0x0001c404 cmp r2, lr                                        |     
                                                                 |     if (r2 <= lr) {
    0x0001c408 subhi r4, r4, 1                                   |         r4--;
                                                                 |     }
    0x0001c40c add r4, r4, sl                                    |     r4 += sl;
    0x0001c410 lsl sb, r4, 0x18                                  |     sb = r4 << 0x18;
    0x0001c414 asr sb, sb, 0x18                                  |     sb >>= 0x18;
    0x0001c418 adds r4, fp, sb                                   |     r4 = fp + sb;
    0x0001c41c sub lr, lr, r2                                    |     lr -= r2;
                                                                 |     if (r4 < fp) {
    0x0001c420 movhs sl, 1                                       |         sl = 1;
                                                                 |     }
                                                                 |     if (r4 >= fp) {
    0x0001c424 movlo sl, 0                                       |         sl = 0;
                                                                 |     }
    0x0001c428 cmp sb, 0                                         |     
    0x0001c42c str lr, [r3, 0xc]                                 |     
                                                                 |     if (sb < 0) {
    0x0001c430 bge 0x1c444                                       |         
    0x0001c434 rsb sl, sb, 0                                     |         sl = sb - ;
    0x0001c438 cmp fp, sl                                        |         
                                                                 |         if (fp < sl) {
    0x0001c43c movhs sl, 0                                       |             sl = 0;
                                                                 |         }
                                                                 |         if (fp < sl) {
    0x0001c440 mvnlo sl, 0                                       |             sl = ~0;
                                                                 |             goto label_5;
                                                                 |         }
                                                                 |     }
                                                                 | label_5:
    0x0001c444 ldr fp, [r3, 0x40]                                |     fp = *((r3 + 0x40));
    0x0001c448 adds r4, ip, r4                                   |     r4 = ip + r4;
                                                                 |     if (r4 < ip) {
    0x0001c44c movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= ip) {
    0x0001c450 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c454 adds r4, ip, r4                                   |     r4 = ip + r4;
                                                                 |     if (r4 < ip) {
    0x0001c458 movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (r4 >= ip) {
    0x0001c45c movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c460 adds r4, fp, r4                                   |     r4 = fp + r4;
    0x0001c464 add sb, sb, lr                                    |     sb += lr;
                                                                 |     if (r4 < fp) {
    0x0001c468 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= fp) {
    0x0001c46c movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c470 adds r4, r7, r4                                   |     r4 = r7 + r4;
    0x0001c474 add sb, sb, lr                                    |     sb += lr;
    0x0001c478 str fp, [sp, 4]                                   |     var_4h = fp;
                                                                 |     if (r4 < r7) {
    0x0001c47c movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (r4 >= r7) {
    0x0001c480 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c484 adds r4, r8, r4                                   |     r4 = r8 + r4;
                                                                 |     if (r4 < r8) {
    0x0001c488 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= r8) {
    0x0001c48c movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c490 add sb, sb, fp                                    |     sb += fp;
    0x0001c494 adds r4, r1, r4                                   |     r4 = r1 + r4;
    0x0001c498 add sb, sb, lr                                    |     sb += lr;
    0x0001c49c ldr r8, [sp]                                      |     r8 = *(sp);
                                                                 |     if (r4 < r1) {
    0x0001c4a0 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= r1) {
    0x0001c4a4 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c4a8 adds r4, r0, r4                                   |     r4 = r0 + r4;
    0x0001c4ac add sb, sb, lr                                    |     sb += lr;
                                                                 |     if (r4 < r0) {
    0x0001c4b0 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= r0) {
    0x0001c4b4 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c4b8 add lr, sb, lr                                    |     lr = sb + lr;
    0x0001c4bc cmp r8, r4                                        |     
                                                                 |     if (r8 <= r4) {
    0x0001c4c0 subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c4c4 sub r4, r4, r8                                    |     r4 -= r8;
    0x0001c4c8 cmp r2, r4                                        |     
                                                                 |     if (r2 <= r4) {
    0x0001c4cc subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c4d0 sub r4, r4, r2                                    |     r4 -= r2;
    0x0001c4d4 cmp r2, r4                                        |     
                                                                 |     if (r2 <= r4) {
    0x0001c4d8 subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c4dc add lr, lr, sl                                    |     lr += sl;
    0x0001c4e0 ldr sb, [r3, 0x14]                                |     sb = *((r3 + 0x14));
    0x0001c4e4 lsl lr, lr, 0x18                                  |     lr <<= 0x18;
    0x0001c4e8 asr lr, lr, 0x18                                  |     lr >>= 0x18;
    0x0001c4ec adds r8, sb, lr                                   |     r8 = sb + lr;
                                                                 |     if (r8 < sb) {
    0x0001c4f0 movhs sl, 1                                       |         sl = 1;
                                                                 |     }
                                                                 |     if (r8 >= sb) {
    0x0001c4f4 movlo sl, 0                                       |         sl = 0;
                                                                 |     }
    0x0001c4f8 sub r4, r4, r2                                    |     r4 -= r2;
    0x0001c4fc cmp lr, 0                                         |     
    0x0001c500 str r4, [r3, 0x10]                                |     *((r3 + 0x10)) = r4;
                                                                 |     if (lr < 0) {
    0x0001c504 movge lr, sl                                      |         lr = sl;
                                                                 |     }
                                                                 |     if (lr < 0) {
    0x0001c508 bge 0x1c51c                                       |         
    0x0001c50c rsb lr, lr, 0                                     |         lr -= ;
    0x0001c510 cmp sb, lr                                        |         
                                                                 |         if (sb < lr) {
    0x0001c514 movhs lr, 0                                       |             lr = 0;
                                                                 |         }
                                                                 |         if (sb < lr) {
    0x0001c518 mvnlo lr, 0                                       |             lr = ~0;
                                                                 |             goto label_6;
                                                                 |         }
                                                                 |     }
                                                                 | label_6:
    0x0001c51c ldr sb, [r3, 0x44]                                |     sb = *((r3 + 0x44));
    0x0001c520 adds r8, r0, r8                                   |     r8 = r0 + r8;
                                                                 |     if (r8 < r0) {
    0x0001c524 movhs sl, 1                                       |         sl = 1;
                                                                 |     }
                                                                 |     if (r8 >= r0) {
    0x0001c528 movlo sl, 0                                       |         sl = 0;
                                                                 |     }
    0x0001c52c adds r8, r0, r8                                   |     r8 = r0 + r8;
                                                                 |     if (r8 < r0) {
    0x0001c530 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (r8 >= r0) {
    0x0001c534 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c538 adds r8, sb, r8                                   |     r8 = sb + r8;
                                                                 |     if (r8 < sb) {
    0x0001c53c movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (r8 >= sb) {
    0x0001c540 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c544 add r4, r4, sl                                    |     r4 += sl;
    0x0001c548 adds r8, r5, r8                                   |     r8 = r5 + r8;
    0x0001c54c add r4, r4, fp                                    |     r4 += fp;
                                                                 |     if (r8 < r5) {
    0x0001c550 movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (r8 >= r5) {
    0x0001c554 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c558 adds r7, r7, r8                                   |     r7 += r8;
    0x0001c55c add fp, r4, fp                                    |     
                                                                 |     if (r7 < r7) {
    0x0001c560 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (r7 >= r7) {
    0x0001c564 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c568 adds r7, ip, r7                                   |     r7 = ip + r7;
                                                                 |     if (r7 < ip) {
    0x0001c56c movhs r8, 1                                       |         r8 = 1;
                                                                 |     }
                                                                 |     if (r7 >= ip) {
    0x0001c570 movlo r8, 0                                       |         r8 = 0;
                                                                 |     }
    0x0001c574 add r4, fp, r4                                    |     r4 = fp + r4;
    0x0001c578 adds r7, r2, r7                                   |     r7 = r2 + r7;
    0x0001c57c add r4, r4, r8                                    |     r4 += r8;
                                                                 |     if (r7 < r2) {
    0x0001c580 movhs r8, 1                                       |         r8 = 1;
                                                                 |     }
                                                                 |     if (r7 >= r2) {
    0x0001c584 movlo r8, 0                                       |         r8 = 0;
                                                                 |     }
    0x0001c588 add r8, r4, r8                                    |     r8 = r4 + r8;
    0x0001c58c ldr r4, [sp, 4]                                   |     r4 = var_4h;
    0x0001c590 cmp r4, r7                                        |     
                                                                 |     if (r4 <= r7) {
    0x0001c594 subhi r8, r8, 1                                   |         r8--;
                                                                 |     }
    0x0001c598 add lr, r8, lr                                    |     lr = r8 + lr;
    0x0001c59c ldr r8, [r3, 0x18]                                |     r8 = *((r3 + 0x18));
    0x0001c5a0 lsl lr, lr, 0x18                                  |     lr <<= 0x18;
    0x0001c5a4 asr lr, lr, 0x18                                  |     lr >>= 0x18;
    0x0001c5a8 adds sl, r8, lr                                   |     sl = r8 + lr;
    0x0001c5ac sub r7, r7, r4                                    |     r7 -= r4;
                                                                 |     if (sl < r8) {
    0x0001c5b0 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (sl >= r8) {
    0x0001c5b4 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c5b8 cmp lr, 0                                         |     
    0x0001c5bc str r7, [r3, 0x14]                                |     *((r3 + 0x14)) = r7;
                                                                 |     if (lr < 0) {
    0x0001c5c0 movge lr, r4                                      |         lr = r4;
                                                                 |     }
                                                                 |     if (lr < 0) {
    0x0001c5c4 bge 0x1c5d8                                       |         
    0x0001c5c8 rsb lr, lr, 0                                     |         lr -= ;
    0x0001c5cc cmp r8, lr                                        |         
                                                                 |         if (r8 < lr) {
    0x0001c5d0 movhs lr, 0                                       |             lr = 0;
                                                                 |         }
                                                                 |         if (r8 < lr) {
    0x0001c5d4 mvnlo lr, 0                                       |             lr = ~0;
                                                                 |             goto label_7;
                                                                 |         }
                                                                 |     }
                                                                 | label_7:
    0x0001c5d8 adds sl, r2, sl                                   |     sl = r2 + sl;
                                                                 |     if (sl < r2) {
    0x0001c5dc movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (sl >= r2) {
    0x0001c5e0 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c5e4 adds sl, r2, sl                                   |     sl = r2 + sl;
                                                                 |     if (sl < r2) {
    0x0001c5e8 movhs r7, 1                                       |         r7 = 1;
                                                                 |     }
                                                                 |     if (sl >= r2) {
    0x0001c5ec movlo r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x0001c5f0 ldr r8, [r3, 0x48]                                |     r8 = *((r3 + 0x48));
    0x0001c5f4 add r7, r7, r4                                    |     r7 += r4;
    0x0001c5f8 ldr r4, [sp]                                      |     r4 = *(sp);
    0x0001c5fc adds sl, r8, sl                                   |     sl = r8 + sl;
                                                                 |     if (sl < r8) {
    0x0001c600 movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (sl >= r8) {
    0x0001c604 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c608 adds sl, r4, sl                                   |     sl = r4 + sl;
                                                                 |     if (sl < r4) {
    0x0001c60c movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (sl >= r4) {
    0x0001c610 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c614 add r7, r7, fp                                    |     r7 += fp;
    0x0001c618 adds sl, r5, sl                                   |     sl = r5 + sl;
    0x0001c61c add r7, r7, r4                                    |     r7 += r4;
                                                                 |     if (sl < r5) {
    0x0001c620 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (sl >= r5) {
    0x0001c624 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c628 adds sl, r0, sl                                   |     sl = r0 + sl;
    0x0001c62c add r7, r7, r4                                    |     r7 += r4;
                                                                 |     if (sl < r0) {
    0x0001c630 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (sl >= r0) {
    0x0001c634 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c638 add r4, r7, r4                                    |     r4 = r7 + r4;
    0x0001c63c cmp sb, sl                                        |     
                                                                 |     if (sb <= sl) {
    0x0001c640 subhi r4, r4, 1                                   |         r4--;
                                                                 |     }
    0x0001c644 add r4, r4, lr                                    |     r4 += lr;
    0x0001c648 ldr r7, [r3, 0x1c]                                |     r7 = *((r3 + 0x1c));
    0x0001c64c lsl r4, r4, 0x18                                  |     r4 <<= 0x18;
    0x0001c650 asr r4, r4, 0x18                                  |     r4 >>= 0x18;
    0x0001c654 adds lr, r7, r4                                   |     lr = r7 + r4;
                                                                 |     if (lr < r7) {
    0x0001c658 movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (lr >= r7) {
    0x0001c65c movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c660 sub sl, sl, sb                                    |     sl -= sb;
    0x0001c664 cmp r4, 0                                         |     
    0x0001c668 str sl, [r3, 0x18]                                |     *((r3 + 0x18)) = sl;
                                                                 |     if (r4 < 0) {
    0x0001c66c movge fp, r5                                      |         
                                                                 |     }
                                                                 |     if (r4 < 0) {
    0x0001c670 bge 0x1c684                                       |         
    0x0001c674 rsb r5, r4, 0                                     |         r5 = r4 - ;
    0x0001c678 cmp r7, r5                                        |         
                                                                 |         if (r7 < r5) {
    0x0001c67c movhs fp, 0                                       |             
                                                                 |         }
                                                                 |         if (r7 < r5) {
    0x0001c680 mvnlo fp, 0                                       |             goto label_8;
                                                                 |         }
                                                                 |     }
                                                                 | label_8:
    0x0001c684 ldr r7, [r3, 0x4c]                                |     r7 = *((r3 + 0x4c));
    0x0001c688 ldr r5, [sp, 4]                                   |     r5 = var_4h;
    0x0001c68c adds lr, r7, lr                                   |     lr = r7 + lr;
                                                                 |     if (lr < r7) {
    0x0001c690 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (lr >= r7) {
    0x0001c694 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c698 str r4, [sp, 0xc]                                 |     var_ch = r4;
    0x0001c69c ldr r4, [sp]                                      |     r4 = *(sp);
    0x0001c6a0 adds lr, r5, lr                                   |     lr = r5 + lr;
                                                                 |     if (lr < r5) {
    0x0001c6a4 movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (lr >= r5) {
    0x0001c6a8 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c6ac adds lr, r4, lr                                   |     lr = r4 + lr;
    0x0001c6b0 ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x0001c6b4 ldr sl, [r3, 0x20]                                |     sl = *((r3 + 0x20));
    0x0001c6b8 add r4, r5, r4                                    |     r4 = r5 + r4;
                                                                 |     if (lr < r4) {
    0x0001c6bc movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (lr >= r4) {
    0x0001c6c0 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c6c4 adds lr, r2, lr                                   |     lr = r2 + lr;
    0x0001c6c8 add r4, r4, r5                                    |     r4 += r5;
                                                                 |     if (lr < r2) {
    0x0001c6cc movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (lr >= r2) {
    0x0001c6d0 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c6d4 add r5, r4, r5                                    |     r5 = r4 + r5;
    0x0001c6d8 cmp r8, lr                                        |     
                                                                 |     if (r8 <= lr) {
    0x0001c6dc subhi r5, r5, 1                                   |         r5--;
                                                                 |     }
    0x0001c6e0 add r5, r5, fp                                    |     r5 += fp;
    0x0001c6e4 adds r4, sl, r5                                   |     r4 = sl + r5;
    0x0001c6e8 sub lr, lr, r8                                    |     lr -= r8;
                                                                 |     if (r4 < sl) {
    0x0001c6ec movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (r4 >= sl) {
    0x0001c6f0 movlo fp, 0                                       |         
                                                                 |     }
    0x0001c6f4 cmp r5, 0                                         |     
    0x0001c6f8 str lr, [r3, 0x1c]                                |     
                                                                 |     if (r5 < 0) {
    0x0001c6fc bge 0x1c710                                       |         
    0x0001c700 rsb fp, r5, 0                                     |         
    0x0001c704 cmp sl, fp                                        |         
                                                                 |         if (sl < fp) {
    0x0001c708 movhs fp, 0                                       |             
                                                                 |         }
                                                                 |         if (sl < fp) {
    0x0001c70c mvnlo fp, 0                                       |             goto label_9;
                                                                 |         }
                                                                 |     }
                                                                 | label_9:
    0x0001c710 ldr sl, [sp, 4]                                   |     sl = var_4h;
    0x0001c714 adds r4, r1, r4                                   |     r4 = r1 + r4;
                                                                 |     if (r4 < r1) {
    0x0001c718 movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (r4 >= r1) {
    0x0001c71c movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c720 adds r4, sb, r4                                   |     r4 = sb + r4;
                                                                 |     if (r4 < sb) {
    0x0001c724 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= sb) {
    0x0001c728 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c72c adds r4, sl, r4                                   |     r4 = sl + r4;
    0x0001c730 add sl, lr, r5                                    |     sl = lr + r5;
                                                                 |     if (r4 < sl) {
    0x0001c734 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r4 >= sl) {
    0x0001c738 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c73c add sl, sl, lr                                    |     sl += lr;
    0x0001c740 ldr r5, [r3, 0x24]                                |     r5 = *((r3 + 0x24));
    0x0001c744 cmp r7, r4                                        |     
                                                                 |     if (r7 <= r4) {
    0x0001c748 subhi sl, sl, 1                                   |         sl--;
                                                                 |     }
    0x0001c74c add sl, sl, fp                                    |     sl += fp;
    0x0001c750 adds lr, r5, sl                                   |     lr = r5 + sl;
    0x0001c754 sub r4, r4, r7                                    |     r4 -= r7;
                                                                 |     if (lr < r5) {
    0x0001c758 movhs fp, 1                                       |         
                                                                 |     }
                                                                 |     if (lr >= r5) {
    0x0001c75c movlo fp, 0                                       |         
                                                                 |     }
    0x0001c760 cmp sl, 0                                         |     
    0x0001c764 str r4, [r3, 0x20]                                |     *((r3 + 0x20)) = r4;
                                                                 |     if (sl < 0) {
    0x0001c768 bge 0x1c77c                                       |         
    0x0001c76c rsb fp, sl, 0                                     |         
    0x0001c770 cmp r5, fp                                        |         
                                                                 |         if (r5 < fp) {
    0x0001c774 movhs fp, 0                                       |             
                                                                 |         }
                                                                 |         if (r5 < fp) {
    0x0001c778 mvnlo fp, 0                                       |             goto label_10;
                                                                 |         }
                                                                 |     }
                                                                 | label_10:
    0x0001c77c adds lr, ip, lr                                   |     lr = ip + lr;
                                                                 |     if (lr < ip) {
    0x0001c780 movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (lr >= ip) {
    0x0001c784 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c788 adds lr, r8, lr                                   |     lr = r8 + lr;
                                                                 |     if (lr < r8) {
    0x0001c78c movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (lr >= r8) {
    0x0001c790 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c794 adds sb, sb, lr                                   |     sb += lr;
    0x0001c798 add r5, r5, r4                                    |     r5 += r4;
                                                                 |     if (sb < sb) {
    0x0001c79c movhs r4, 1                                       |         r4 = 1;
                                                                 |     }
                                                                 |     if (sb >= sb) {
    0x0001c7a0 movlo r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0001c7a4 add r5, r5, r4                                    |     r5 += r4;
    0x0001c7a8 ldr sl, [r3, 0x28]                                |     sl = *((r3 + 0x28));
    0x0001c7ac cmp r1, sb                                        |     
                                                                 |     if (r1 <= sb) {
    0x0001c7b0 subhi r5, r5, 1                                   |         r5--;
                                                                 |     }
    0x0001c7b4 add fp, r5, fp                                    |     
    0x0001c7b8 adds r5, sl, fp                                   |     r5 = sl + fp;
                                                                 |     if (r5 < sl) {
    0x0001c7bc movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r5 >= sl) {
    0x0001c7c0 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c7c4 sub sb, sb, r1                                    |     sb -= r1;
    0x0001c7c8 cmp fp, 0                                         |     
    0x0001c7cc str sb, [r3, 0x24]                                |     *((r3 + 0x24)) = sb;
                                                                 |     if (fp < 0) {
    0x0001c7d0 movge r4, lr                                      |         r4 = lr;
                                                                 |     }
                                                                 |     if (fp < 0) {
    0x0001c7d4 bge 0x1c7e8                                       |         
    0x0001c7d8 rsb fp, fp, 0                                     |         
    0x0001c7dc cmp sl, fp                                        |         
                                                                 |         if (sl < fp) {
    0x0001c7e0 movhs r4, 0                                       |             r4 = 0;
                                                                 |         }
                                                                 |         if (sl < fp) {
    0x0001c7e4 mvnlo r4, 0                                       |             r4 = ~0;
                                                                 |             goto label_11;
                                                                 |         }
                                                                 |     }
                                                                 | label_11:
    0x0001c7e8 adds r5, r0, r5                                   |     r5 = r0 + r5;
                                                                 |     if (r5 < r0) {
    0x0001c7ec movhs sb, 1                                       |         sb = 1;
                                                                 |     }
                                                                 |     if (r5 >= r0) {
    0x0001c7f0 movlo sb, 0                                       |         sb = 0;
                                                                 |     }
    0x0001c7f4 adds r5, r7, r5                                   |     r5 = r7 + r5;
                                                                 |     if (r5 < r7) {
    0x0001c7f8 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r5 >= r7) {
    0x0001c7fc movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c800 adds r8, r8, r5                                   |     r8 += r5;
                                                                 |     if (r8 < r8) {
    0x0001c804 movhs r5, 1                                       |         r5 = 1;
                                                                 |     }
                                                                 |     if (r8 >= r8) {
    0x0001c808 movlo r5, 0                                       |         r5 = 0;
                                                                 |     }
    0x0001c80c add lr, lr, sb                                    |     lr += sb;
    0x0001c810 add lr, lr, r5                                    |     lr += r5;
    0x0001c814 ldr r5, [r3, 0x2c]                                |     r5 = *((r3 + 0x2c));
    0x0001c818 cmp ip, r8                                        |     
                                                                 |     if (ip <= r8) {
    0x0001c81c subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c820 add lr, lr, r4                                    |     lr += r4;
    0x0001c824 adds r4, r5, lr                                   |     r4 = r5 + lr;
    0x0001c828 sub r8, r8, ip                                    |     r8 -= ip;
                                                                 |     if (r4 < r5) {
    0x0001c82c movhs ip, 1                                       |         
                                                                 |     }
                                                                 |     if (r4 >= r5) {
    0x0001c830 movlo ip, 0                                       |         
                                                                 |     }
    0x0001c834 cmp lr, 0                                         |     
    0x0001c838 str r8, [r3, 0x28]                                |     *((r3 + 0x28)) = r8;
                                                                 |     if (lr < 0) {
    0x0001c83c movge r5, ip                                      |         r5 = ip;
                                                                 |     }
                                                                 |     if (lr < 0) {
    0x0001c840 bge 0x1c854                                       |         
    0x0001c844 rsb lr, lr, 0                                     |         lr -= ;
    0x0001c848 cmp r5, lr                                        |         
                                                                 |         if (r5 < lr) {
    0x0001c84c movhs r5, 0                                       |             r5 = 0;
                                                                 |         }
                                                                 |         if (r5 < lr) {
    0x0001c850 mvnlo r5, 0                                       |             r5 = ~0;
                                                                 |             goto label_12;
                                                                 |         }
                                                                 |     }
                                                                 | label_12:
    0x0001c854 adds r2, r2, r4                                   |     r2 += r4;
                                                                 |     if (r2 < r2) {
    0x0001c858 movhs ip, 1                                       |         
                                                                 |     }
                                                                 |     if (r2 >= r2) {
    0x0001c85c movlo ip, 0                                       |         
                                                                 |     }
    0x0001c860 adds r2, r1, r2                                   |     r2 = r1 + r2;
                                                                 |     if (r2 < r1) {
    0x0001c864 movhs lr, 1                                       |         lr = 1;
                                                                 |     }
                                                                 |     if (r2 >= r1) {
    0x0001c868 movlo lr, 0                                       |         lr = 0;
                                                                 |     }
    0x0001c86c adds r2, r7, r2                                   |     r2 = r7 + r2;
                                                                 |     if (r2 < r7) {
    0x0001c870 movhs r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r2 >= r7) {
    0x0001c874 movlo r1, 0                                       |         r1 = 0;
                                                                 |     }
    0x0001c878 add lr, lr, ip                                    |     lr += ip;
    0x0001c87c add lr, lr, r1                                    |     lr += r1;
    0x0001c880 cmp r0, r2                                        |     
                                                                 |     if (r0 <= r2) {
    0x0001c884 subhi lr, lr, 1                                   |         lr--;
                                                                 |     }
    0x0001c888 add lr, lr, r5                                    |     lr += r5;
    0x0001c88c bic r1, lr, lr, asr 31                            |     r1 = BIT_MASK (lr, lr);
    0x0001c890 sub r2, r2, r0                                    |     r2 -= r0;
    0x0001c894 str r2, [r3, 0x2c]                                |     *((r3 + 0x2c)) = r2;
    0x0001c898 str r1, [r3, 0x30]                                |     *((r3 + 0x30)) = r1;
    0x0001c89c ldr r2, [r6, 4]                                   |     r2 = *((r6 + 4));
    0x0001c8a0 cmp r2, 0xd                                       |     
                                                                 |     if (r2 < 0xd) {
    0x0001c8a4 bls 0x1c8c8                                       |         goto label_13;
                                                                 |     }
    0x0001c8a8 add r3, r3, 0x30                                  |     r3 += 0x30;
    0x0001c8ac mov r2, 0xd                                       |     r2 = 0xd;
    0x0001c8b0 mov r0, 0                                         |     r0 = 0;
                                                                 |     do {
    0x0001c8b4 str r0, [r3, 4]!                                  |         *((r3 += 4)) = r0;
    0x0001c8b8 ldr r1, [r6, 4]                                   |         r1 = *((r6 + 4));
    0x0001c8bc add r2, r2, 1                                     |         r2++;
    0x0001c8c0 cmp r1, r2                                        |         
    0x0001c8c4 bhi 0x1c8b4                                       |         
                                                                 |     } while (r1 > r2);
                                                                 | label_13:
    0x0001c8c8 cmp lr, 0                                         |     
                                                                 |     if (lr >= 0) {
    0x0001c8cc blt 0x1c8f0                                       |         
                                                                 | label_1:
    0x0001c8d0 ldr r0, [sp, 8]                                   |         r0 = var_8h;
    0x0001c8d4 add sp, sp, 0x54                                  |         
    0x0001c8d8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_2:
    0x0001c8dc cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x0001c8e0 movne sb, 0                                       |             sb = 0;
                                                                 |         }
                                                                 |         if (r4 != 0) {
    0x0001c8e4 mvneq sb, 0                                       |             sb = ~0;
                                                                 |         }
    0x0001c8e8 sub r4, r4, 1                                     |         r4--;
    0x0001c8ec b 0x1c2ac                                         |         goto label_0;
                                                                 |     }
    0x0001c8f0 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0001c8f4 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x0001c8f8 sub r3, r3, 0xc0000001                            |     r3 -= 0xc0000001;
    0x0001c8fc rsb lr, lr, 0                                     |     lr -= ;
    0x0001c900 str lr, [r2, r3, lsl 2]                           |     
    0x0001c904 add r1, sp, 0x10                                  |     r1 += var_10h;
    0x0001c908 mov r2, r6                                        |     r2 = r6;
    0x0001c90c mov r0, r6                                        |     r0 = r6;
    0x0001c910 bl 0x90b4                                         |     r0 = fcn_000090b4 ();
    0x0001c914 cmp r0, 0                                         |     
    0x0001c918 ldr r0, [sp, 8]                                   |     r0 = var_8h;
                                                                 |     if (r0 != 0) {
    0x0001c91c mvneq r3, 0                                       |         r3 = ~0;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x0001c920 streq r3, [r6]                                    |         *(r6) = r3;
                                                                 |     }
    0x0001c924 add sp, sp, 0x54                                  |     
    0x0001c928 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/libmbedcrypto.so.2.2.1 @ 0x14710 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.mbedtls_ctr_drbg_reseed ()           | void mbedtls_ctr_drbg_reseed (int32_t arg1, int32_t arg2) {
                                                     |     void * s;
                                                     |     int32_t var_184h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00014710 push {r4, r5, r6, r7, r8, sb, lr}     |     
    0x00014714 ldr r6, [r0, 0x18]                    |     r6 = *((r0 + 0x18));
    0x00014718 sub sp, sp, 0x184                     |     
    0x0001471c add r3, r6, r2                        |     r3 = r6 + r2;
    0x00014720 cmp r3, 0x180                         |     
                                                     |     if (r3 > 0x180) {
    0x00014724 bhi 0x147bc                           |         goto label_1;
                                                     |     }
    0x00014728 mov r5, sp                            |     r5 = sp;
    0x0001472c mov r4, r0                            |     r4 = r0;
    0x00014730 mov r8, r1                            |     r8 = r1;
    0x00014734 mov r7, r2                            |     r7 = r2;
    0x00014738 mov r1, 0                             |     r1 = 0;
    0x0001473c mov r2, 0x180                         |     r2 = 0x180;
    0x00014740 mov r0, r5                            |     r0 = r5;
    0x00014744 bl 0x8c28                             |     memset (r0, r1, r2);
    0x00014748 mov r2, r6                            |     r2 = r6;
    0x0001474c mov r1, r5                            |     r1 = r5;
    0x00014750 ldr r3, [r4, 0x138]                   |     r3 = *((r4 + 0x138));
    0x00014754 ldr r0, [r4, 0x13c]                   |     r0 = *((r4 + 0x13c));
    0x00014758 blx r3                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0001475c subs sb, r0, 0                        |     sb = r0 - 0;
                                                     |     if (sb != r0) {
    0x00014760 bne 0x147c4                           |         goto label_2;
                                                     |     }
    0x00014764 cmp r8, 0                             |     
    0x00014768 cmpne r7, 0                           |     __asm ("cmpne r7, 0");
    0x0001476c ldr r6, [r4, 0x18]                    |     r6 = *((r4 + 0x18));
    0x00014770 bne 0x147a4                           |     
                                                     |     while (1) {
    0x00014774 mov r2, r6                            |         r2 = r6;
    0x00014778 mov r1, r5                            |         r1 = r5;
    0x0001477c mov r0, r5                            |         r0 = r5;
    0x00014780 bl 0x143fc                            |         block_cipher_df ();
    0x00014784 mov r1, r5                            |         r1 = r5;
    0x00014788 mov r0, r4                            |         r0 = r4;
    0x0001478c bl 0x145b4                            |         ctr_drbg_update_internal ();
    0x00014790 mov r3, 1                             |         r3 = 1;
    0x00014794 str r3, [r4, 0x10]                    |         *((r4 + 0x10)) = r3;
                                                     | label_0:
    0x00014798 mov r0, sb                            |         r0 = sb;
    0x0001479c add sp, sp, 0x184                     |         
    0x000147a0 pop {r4, r5, r6, r7, r8, sb, pc}      |         
    0x000147a4 add r0, r5, r6                        |         r0 = r5 + r6;
    0x000147a8 mov r1, r8                            |         r1 = r8;
    0x000147ac mov r2, r7                            |         r2 = r7;
    0x000147b0 bl 0x8550                             |         memcpy (r0, r1, r2);
    0x000147b4 add r6, r6, r7                        |         r6 += r7;
    0x000147b8 b 0x14774                             |         
                                                     |     }
                                                     | label_1:
    0x000147bc mvn sb, 0x37                          |     sb = ~0x37;
    0x000147c0 b 0x14798                             |     goto label_0;
                                                     | label_2:
    0x000147c4 mvn sb, 0x33                          |     sb = ~0x33;
    0x000147c8 b 0x14798                             |     goto label_0;
                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x22178 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.mbedtls_md_file ()                   | void mbedtls_md_file (int32_t arg1, int32_t arg2) {
                                                     |     int32_t var_ch;
                                                     |     int32_t var_8h;
                                                     |     void * ptr;
                                                     |     int32_t var_410h;
                                                     |     int32_t var_4h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00022178 push {r4, r5, r6, r7, r8, sb, lr}     |     
    0x0002217c subs r5, r0, 0                        |     r5 = r0 - 0;
    0x00022180 sub sp, sp, 0x410                     |     
    0x00022184 sub sp, sp, 4                         |     
                                                     |     if (r5 == r0) {
    0x00022188 beq 0x22254                           |         goto label_1;
                                                     |     }
    0x0002218c mov r0, r1                            |     r0 = r1;
    0x00022190 ldr r1, [pc, 0xcc]                    |     r1 = *(0x22260);
    0x00022194 mov r7, r2                            |     r7 = r2;
    0x00022198 add r1, pc, r1                        |     r1 = pc + r1;
    0x0002219c bl 0x91a4                             |     r0 = fopen64 ();
    0x000221a0 subs r6, r0, 0                        |     r6 = r0 - 0;
                                                     |     if (r6 == r0) {
    0x000221a4 beq 0x2225c                           |         goto label_2;
                                                     |     }
    0x000221a8 add r4, sp, 0x10                      |     r4 += ptr;
    0x000221ac sub r8, r4, 0xc                       |     r8 -= var_ch;
    0x000221b0 mov r0, r8                            |     r0 = r8;
    0x000221b4 bl 0x8958                             |     fcn_00008958 ();
    0x000221b8 mov r0, r8                            |     r0 = r8;
    0x000221bc mov r2, 0                             |     r2 = 0;
    0x000221c0 mov r1, r5                            |     r1 = r5;
    0x000221c4 bl 0x8ba4                             |     fcn_00008ba4 ();
    0x000221c8 subs sb, r0, 0                        |     sb -= var_ch;
                                                     |     if (sb != var_ch) {
    0x000221cc bne 0x2222c                           |         goto label_3;
                                                     |     }
    0x000221d0 ldr r3, [r5, 0x10]                    |     r3 = *((r5 + 0x10));
    0x000221d4 ldr r0, [sp, 8]                       |     r0 = var_8h;
    0x000221d8 blx r3                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000221dc b 0x221ec                             |     
                                                     |     while (r2 != ptr) {
    0x000221e0 ldr r3, [r5, 0x14]                    |         r3 = *((r5 + 0x14));
    0x000221e4 ldr r0, [sp, 8]                       |         r0 = var_8h;
    0x000221e8 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000221ec mov r2, 0x400                         |         r2 = 0x400;
    0x000221f0 mov r1, 1                             |         r1 = 1;
    0x000221f4 mov r3, r6                            |         r3 = r6;
    0x000221f8 mov r0, r4                            |         r0 = r4;
    0x000221fc bl 0x8b98                             |         fread (r0, r1, r2, r3);
    0x00022200 mov r1, r4                            |         r1 = r4;
    0x00022204 subs r2, r0, 0                        |         r2 -= ptr;
    0x00022208 bne 0x221e0                           |         
                                                     |     }
    0x0002220c mov r0, r6                            |     r0 = r6;
    0x00022210 bl 0x89dc                             |     r0 = ferror (r0);
    0x00022214 subs sb, r0, 0                        |     sb = r0 - 0;
                                                     |     if (sb != r0) {
    0x00022218 bne 0x2224c                           |         goto label_4;
                                                     |     }
    0x0002221c ldr r3, [r5, 0x18]                    |     r3 = *((r5 + 0x18));
    0x00022220 mov r1, r7                            |     r1 = r7;
    0x00022224 ldr r0, [sp, 8]                       |     r0 = var_8h;
    0x00022228 blx r3                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                     |     do {
                                                     | label_3:
    0x0002222c mov r0, r6                            |         r0 = r6;
    0x00022230 bl 0x8c70                             |         fclose (r0);
    0x00022234 mov r0, r8                            |         r0 = r8;
    0x00022238 bl 0x9108                             |         fcn_00009108 ();
                                                     | label_0:
    0x0002223c mov r0, sb                            |         r0 = sb;
    0x00022240 add sp, sp, 0x410                     |         
    0x00022244 add sp, sp, 4                         |         
    0x00022248 pop {r4, r5, r6, r7, r8, sb, pc}      |         
                                                     | label_4:
    0x0002224c ldr sb, [pc, 0x14]                    |         sb = *(0x00022268);
    0x00022250 b 0x2222c                             |         
                                                     |     } while (1);
                                                     | label_1:
    0x00022254 ldr sb, [pc, 0x10]                    |     sb = *(0x0002226c);
    0x00022258 b 0x2223c                             |     goto label_0;
                                                     | label_2:
    0x0002225c ldr sb, [pc, 4]                       |     sb = *(0x00022268);
    0x00022260 b 0x2223c                             |     goto label_0;
                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libmbedcrypto.so.2.2.1 @ 0x2f928 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.mbedtls_sha512_process ()                    | void mbedtls_sha512_process (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_18h_2;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_28h_2;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_30h_2;
                                                             |     int32_t var_38h;
                                                             |     int32_t var_38h_2;
                                                             |     int32_t var_40h;
                                                             |     int32_t var_44h;
                                                             |     int32_t var_48h;
                                                             |     int32_t var_4ch;
                                                             |     int32_t var_50h;
                                                             |     int32_t var_54h;
                                                             |     int32_t var_58h;
                                                             |     int32_t var_5ch;
                                                             |     int32_t var_60h;
                                                             |     int32_t var_64h;
                                                             |     int32_t var_68h;
                                                             |     int32_t var_6ch;
                                                             |     int32_t var_70h;
                                                             |     int32_t var_74h;
                                                             |     int32_t var_78h;
                                                             |     int32_t var_7ch;
                                                             |     int32_t var_80h;
                                                             |     int32_t var_84h;
                                                             |     int32_t var_88h;
                                                             |     int32_t var_8ch;
                                                             |     int32_t var_90h;
                                                             |     int32_t var_94h;
                                                             |     int32_t var_98h;
                                                             |     int32_t var_9ch;
                                                             |     int32_t var_a0h;
                                                             |     int32_t var_a4h;
                                                             |     int32_t var_a8h;
                                                             |     int32_t var_ach;
                                                             |     int32_t var_b0h;
                                                             |     int32_t var_b4h;
                                                             |     int32_t var_b8h;
                                                             |     int32_t var_bch;
                                                             |     int32_t var_c0h;
                                                             |     int32_t var_c4h;
                                                             |     int32_t var_c8h;
                                                             |     int32_t var_cch;
                                                             |     int32_t var_d0h;
                                                             |     int32_t var_d4h;
                                                             |     int32_t var_d8h;
                                                             |     int32_t var_dch;
                                                             |     int32_t var_e0h;
                                                             |     int32_t var_e4h;
                                                             |     int32_t var_e8h;
                                                             |     int32_t var_ech;
                                                             |     int32_t var_f0h;
                                                             |     int32_t var_f4h;
                                                             |     int32_t var_f8h;
                                                             |     int32_t var_fch;
                                                             |     int32_t var_100h;
                                                             |     int32_t var_104h;
                                                             |     int32_t var_108h;
                                                             |     int32_t var_10ch;
                                                             |     int32_t var_110h;
                                                             |     int32_t var_114h;
                                                             |     int32_t var_118h;
                                                             |     int32_t var_11ch;
                                                             |     int32_t var_120h;
                                                             |     int32_t var_124h;
                                                             |     int32_t var_128h;
                                                             |     int32_t var_12ch;
                                                             |     int32_t var_130h;
                                                             |     int32_t var_134h;
                                                             |     int32_t var_138h;
                                                             |     int32_t var_13ch;
                                                             |     int32_t var_140h;
                                                             |     int32_t var_144h;
                                                             |     int32_t var_148h;
                                                             |     int32_t var_14ch;
                                                             |     int32_t var_150h;
                                                             |     int32_t var_154h;
                                                             |     int32_t var_158h;
                                                             |     int32_t var_15ch;
                                                             |     int32_t var_160h;
                                                             |     int32_t var_164h;
                                                             |     int32_t var_168h;
                                                             |     int32_t var_16ch;
                                                             |     int32_t var_170h;
                                                             |     int32_t var_174h;
                                                             |     int32_t var_178h;
                                                             |     int32_t var_17ch;
                                                             |     int32_t var_180h;
                                                             |     int32_t var_184h;
                                                             |     int32_t var_188h;
                                                             |     int32_t var_18ch;
                                                             |     int32_t var_190h;
                                                             |     int32_t var_194h;
                                                             |     int32_t var_198h;
                                                             |     int32_t var_19ch;
                                                             |     int32_t var_1a0h;
                                                             |     int32_t var_1a4h;
                                                             |     int32_t var_1a8h;
                                                             |     int32_t var_1ach;
                                                             |     int32_t var_1b0h;
                                                             |     int32_t var_1b4h;
                                                             |     int32_t var_1b8h;
                                                             |     int32_t var_1bch;
                                                             |     int32_t var_1c4h;
                                                             |     int32_t var_1c8h;
                                                             |     int32_t var_0h_16;
                                                             |     int32_t var_1d0h;
                                                             |     int32_t var_0h_15;
                                                             |     int32_t var_1d8h;
                                                             |     int32_t var_0h_14;
                                                             |     int32_t var_1e0h;
                                                             |     int32_t var_0h_13;
                                                             |     int32_t var_1e8h;
                                                             |     int32_t var_0h_12;
                                                             |     int32_t var_1f0h;
                                                             |     int32_t var_0h_11;
                                                             |     int32_t var_1f8h;
                                                             |     int32_t var_0h_10;
                                                             |     int32_t var_200h;
                                                             |     int32_t var_0h_6;
                                                             |     int32_t var_208h;
                                                             |     int32_t var_0h_7;
                                                             |     int32_t var_210h;
                                                             |     int32_t var_0h_8;
                                                             |     int32_t var_218h;
                                                             |     int32_t var_0h_9;
                                                             |     int32_t var_220h;
                                                             |     int32_t var_224h;
                                                             |     int32_t var_228h;
                                                             |     int32_t var_0h_2;
                                                             |     int32_t var_230h;
                                                             |     int32_t var_0h_3;
                                                             |     int32_t var_238h;
                                                             |     int32_t var_0h_4;
                                                             |     int32_t var_240h;
                                                             |     int32_t var_0h_5;
                                                             |     int32_t var_248h;
                                                             |     int32_t var_8h_2;
                                                             |     int32_t var_8h_4;
                                                             |     int32_t var_ch_2;
                                                             |     int32_t var_48h_2;
                                                             |     int32_t var_48h_3;
                                                             |     int32_t var_70h_2;
                                                             |     int32_t var_74h_2;
                                                             |     int32_t var_78h_2;
                                                             |     int32_t var_78h_3;
                                                             |     int32_t var_440h;
                                                             |     int32_t var_8h_3;
                                                             |     int32_t var_4c0h;
                                                             |     int32_t var_ch_3;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x0002f928 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x0002f92c sub sp, sp, 0x4c0                             |     
    0x0002f930 sub sp, sp, 0xc                               |     
    0x0002f934 add r3, r1, 0x80                              |     r3 = r1 + 0x80;
    0x0002f938 mov ip, r1                                    |     
    0x0002f93c add lr, sp, 0x240                             |     lr += var_240h;
    0x0002f940 str r0, [sp, 0x224]                           |     var_224h = r0;
    0x0002f944 strd sl, fp, [sp, 0x28]                       |     __asm ("strd sl, fp, [var_0hx28]");
    0x0002f948 str r3, [sp, 0x20]                            |     var_20h = r3;
                                                             |     do {
    0x0002f94c ldrb r0, [ip, 1]                              |         r0 = *((ip + 1));
    0x0002f950 ldrb r2, [ip]                                 |         r2 = *(ip);
    0x0002f954 ldrb r4, [ip, 7]                              |         r4 = *((ip + 7));
    0x0002f958 mov r6, 0                                     |         r6 = 0;
    0x0002f95c lsl r5, r0, 0x10                              |         r5 = r0 << 0x10;
    0x0002f960 ldrb r0, [ip, 2]                              |         r0 = *((ip + 2));
    0x0002f964 lsl r7, r2, 0x18                              |         r7 = r2 << 0x18;
    0x0002f968 orr r2, r6, r6                                |         r2 = r6 | r6;
    0x0002f96c ldrb sb, [ip, 3]                              |         sb = *((ip + 3));
    0x0002f970 orr r3, r5, r7                                |         r3 = r5 | r7;
    0x0002f974 orr sl, r2, r4                                |         sl = r2 | r4;
    0x0002f978 mov r5, 0                                     |         r5 = 0;
    0x0002f97c ldrb r4, [ip, 4]                              |         r4 = *((ip + 4));
    0x0002f980 orr fp, r3, r5                                |         
    0x0002f984 lsl r5, r0, 8                                 |         r5 = r0 << 8;
    0x0002f988 orr r2, sl, r6                                |         r2 = sl | r6;
    0x0002f98c orr r3, fp, r5                                |         r3 = fp | r5;
    0x0002f990 orr r5, r3, sb                                |         r5 = r3 | sb;
    0x0002f994 lsr r1, r4, 8                                 |         r1 = r4 >> 8;
    0x0002f998 mov sl, r4                                    |         sl = r4;
    0x0002f99c orr r4, r2, r6                                |         r4 = r2 | r6;
    0x0002f9a0 strd r4, r5, [sp, 0x18]                       |         __asm ("strd r4, r5, [var_18h]");
    0x0002f9a4 ldrb r8, [ip, 5]                              |         r8 = *((ip + 5));
    0x0002f9a8 ldrd r2, r3, [sp, 0x18]                       |         __asm ("ldrd r2, r3, [var_18h]");
    0x0002f9ac ldrb r6, [ip, 6]                              |         r6 = *((ip + 6));
    0x0002f9b0 orr r3, r3, r1                                |         r3 |= r1;
    0x0002f9b4 lsr r5, r8, 0x10                              |         r5 = r8 >> 0x10;
    0x0002f9b8 lsr r1, r6, 0x18                              |         r1 = r6 >> 0x18;
    0x0002f9bc orr sb, r3, r5                                |         sb = r3 | r5;
    0x0002f9c0 lsl r0, sl, 0x18                              |         r0 = sl << 0x18;
    0x0002f9c4 orr r3, sb, r1                                |         r3 = sb | r1;
    0x0002f9c8 ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x0002f9cc orr r2, r2, r0                                |         r2 |= r0;
    0x0002f9d0 lsl r4, r8, 0x10                              |         r4 = r8 << 0x10;
    0x0002f9d4 orr r8, r2, r4                                |         r8 = r2 | r4;
    0x0002f9d8 lsl r0, r6, 8                                 |         r0 = r6 << 8;
    0x0002f9dc add ip, ip, 8                                 |         
    0x0002f9e0 orr r2, r8, r0                                |         r2 = r8 | r0;
    0x0002f9e4 cmp r1, ip                                    |         
    0x0002f9e8 strd r2, r3, [lr, 8]!                         |         __asm ("strd r2, r3, [var_8h_2]!");
    0x0002f9ec bne 0x2f94c                                   |         
                                                             |     } while (r1 != ip);
    0x0002f9f0 add r7, sp, 0x440                             |     r7 += var_440h;
    0x0002f9f4 add r6, sp, 0x248                             |     r6 += var_248h;
    0x0002f9f8 add r7, r7, 8                                 |     r7 += var_8h_3;
    0x0002f9fc str r6, [sp, 0x30]                            |     var_30h = r6;
                                                             |     do {
    0x0002fa00 ldr r4, [r6, 0x74]                            |         r4 = var_74h_2;
    0x0002fa04 ldr r1, [r6, 0x70]                            |         r1 = var_70h_2;
    0x0002fa08 lsl r0, r4, 3                                 |         r0 = r4 << 3;
    0x0002fa0c orr r0, r0, r1, lsr 29                        |         r0 |= (r1 >> 29);
    0x0002fa10 str r0, [sp, 0xc]                             |         var_ch = r0;
    0x0002fa14 lsl r0, r1, 3                                 |         r0 = r1 << 3;
    0x0002fa18 orr r0, r0, r4, lsr 29                        |         r0 |= (r4 >> 29);
    0x0002fa1c str r0, [sp, 8]                               |         var_8h = r0;
    0x0002fa20 lsr r0, r4, 0x13                              |         r0 = r4 >> 0x13;
    0x0002fa24 lsr r5, r1, 0x13                              |         r5 = r1 >> 0x13;
    0x0002fa28 lsr r2, r1, 6                                 |         r2 = r1 >> 6;
    0x0002fa2c orr r1, r0, r1, lsl 13                        |         r1 = r0 | (r1 << 13);
    0x0002fa30 str r1, [sp, 4]                               |         var_4h = r1;
    0x0002fa34 ldrd r0, r1, [r6, 0x48]                       |         __asm ("ldrd r0, r1, [var_48h_2]");
    0x0002fa38 ldr lr, [r6, 8]                               |         lr = var_8h_4;
    0x0002fa3c orr r5, r5, r4, lsl 13                        |         r5 |= (r4 << 13);
    0x0002fa40 str r5, [sp]                                  |         *(sp) = r5;
    0x0002fa44 orr r2, r2, r4, lsl 26                        |         r2 |= (r4 << 26);
    0x0002fa48 lsr r3, r4, 6                                 |         r3 = r4 >> 6;
    0x0002fa4c strd r0, r1, [sp, 0x18]                       |         __asm ("strd r0, r1, [var_18h]");
    0x0002fa50 ldr ip, [r6, 0xc]                             |         ip = var_ch_2;
    0x0002fa54 ldrd r0, r1, [sp, 8]                          |         __asm ("ldrd r0, r1, [var_ch]");
    0x0002fa58 ldrd r4, r5, [sp]                             |         __asm ("ldrd r4, r5, [sp]");
    0x0002fa5c lsr r8, lr, 7                                 |         r8 = lr >> 7;
    0x0002fa60 eor r4, r4, r0                                |         r4 ^= r0;
    0x0002fa64 eor r5, r5, r1                                |         r5 ^= r1;
    0x0002fa68 eor r4, r4, r2                                |         r4 ^= r2;
    0x0002fa6c eor r5, r5, r3                                |         r5 ^= r3;
    0x0002fa70 ldrd r0, r1, [sp, 0x18]                       |         __asm ("ldrd r0, r1, [var_18h]");
    0x0002fa74 ldrd r2, r3, [r6]                             |         __asm ("ldrd r2, r3, [r6]");
    0x0002fa78 orr r8, r8, ip, lsl 25                        |         r8 |= (ip << 25);
    0x0002fa7c adds r0, r0, r2                               |         r0 += r2;
    0x0002fa80 adc r1, r1, r3                                |         __asm ("adc r1, r1, r3");
    0x0002fa84 lsr r3, lr, 1                                 |         r3 = lr >> 1;
    0x0002fa88 orr r3, r3, ip, lsl 31                        |         r3 |= (ip << 31);
    0x0002fa8c str r3, [sp, 0x10]                            |         var_10h = r3;
    0x0002fa90 lsr r3, lr, 8                                 |         r3 = lr >> 8;
    0x0002fa94 orr sl, r3, ip, lsl 24                        |         sl = r3 | (ip << 24);
    0x0002fa98 lsr r3, ip, 1                                 |         r3 = ip >> 1;
    0x0002fa9c orr r3, r3, lr, lsl 31                        |         r3 |= (lr << 31);
    0x0002faa0 adds r0, r0, r4                               |         r0 += r4;
    0x0002faa4 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x0002faa8 adc r1, r1, r5                                |         __asm ("adc r1, r1, r5");
    0x0002faac ldrd r4, r5, [sp, 0x10]                       |         __asm ("ldrd r4, r5, [var_10h]");
    0x0002fab0 lsr sb, ip, 7                                 |         sb = ip >> 7;
    0x0002fab4 lsr ip, ip, 8                                 |         
    0x0002fab8 eor r4, r4, sl                                |         r4 ^= sl;
    0x0002fabc orr fp, ip, lr, lsl 24                        |         
    0x0002fac0 eor r5, r5, fp                                |         r5 ^= fp;
    0x0002fac4 eor r2, r4, r8                                |         r2 = r4 ^ r8;
    0x0002fac8 adds r4, r2, r0                               |         r4 = r2 + r0;
    0x0002facc add r6, r6, 8                                 |         r6 += var_8h_4;
    0x0002fad0 eor r3, r5, sb                                |         r3 = r5 ^ sb;
    0x0002fad4 adc r5, r3, r1                                |         __asm ("adc r5, r3, r1");
    0x0002fad8 cmp r7, r6                                    |         
    0x0002fadc strd r4, r5, [r6, 0x78]                       |         __asm ("strd r4, r5, [var_78h_2]");
    0x0002fae0 bne 0x2fa00                                   |         
                                                             |     } while (r7 != r6);
    0x0002fae4 ldr r3, [sp, 0x224]                           |     r3 = var_224h;
    0x0002fae8 add r2, sp, 0x228                             |     r2 += var_228h;
    0x0002faec ldrd r6, r7, [r3, 0x10]                       |     __asm ("ldrd r6, r7, [r3, 0x10]");
    0x0002faf0 ldr ip, [pc, 0x170]                           |     ip = *(0x2fc64);
    0x0002faf4 ldrd r0, r1, [r3, 0x18]                       |     __asm ("ldrd r0, r1, [r3, 0x18]");
    0x0002faf8 ldrd r8, sb, [r3, 0x20]                       |     __asm ("ldrd r8, sb, [r3, 0x20]");
    0x0002fafc strd r6, r7, [r2]                             |     __asm ("strd r6, r7, [r2]");
    0x0002fb00 ldrd sl, fp, [r3, 0x28]                       |     __asm ("ldrd sl, fp, [r3, 0x28]");
    0x0002fb04 add r2, sp, 0x230                             |     r2 += var_230h;
    0x0002fb08 strd r0, r1, [r2]                             |     __asm ("strd r0, r1, [r2]");
    0x0002fb0c ldrd r4, r5, [r3, 0x30]                       |     __asm ("ldrd r4, r5, [r3, 0x30]");
    0x0002fb10 add r2, sp, 0x238                             |     r2 += var_238h;
    0x0002fb14 strd r8, sb, [r2]                             |     __asm ("strd r8, sb, [r2]");
    0x0002fb18 add r2, sp, 0x240                             |     r2 += var_240h;
    0x0002fb1c strd sl, fp, [r2]                             |     __asm ("strd sl, fp, [r2]");
    0x0002fb20 add r2, sp, 0x200                             |     r2 += var_200h;
    0x0002fb24 strd r4, r5, [r2]                             |     __asm ("strd r4, r5, [r2]");
    0x0002fb28 ldrd r4, r5, [r3, 0x38]                       |     __asm ("ldrd r4, r5, [r3, 0x38]");
    0x0002fb2c add r2, sp, 0x208                             |     r2 += var_208h;
    0x0002fb30 strd r4, r5, [r2]                             |     __asm ("strd r4, r5, [r2]");
    0x0002fb34 ldrd r4, r5, [r3, 0x40]                       |     __asm ("ldrd r4, r5, [r3, 0x40]");
    0x0002fb38 add r2, sp, 0x210                             |     r2 += var_210h;
    0x0002fb3c strd r4, r5, [r2]                             |     __asm ("strd r4, r5, [r2]");
    0x0002fb40 ldrd r2, r3, [r3, 0x48]                       |     __asm ("ldrd r2, r3, [r3, 0x48]");
    0x0002fb44 add r5, pc, 0xdc                              |     r5 = pc + 0xdc;
    0x0002fb48 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fb4c add lr, sp, 0x218                             |     lr += var_218h;
    0x0002fb50 strd r2, r3, [lr]                             |     __asm ("strd r2, r3, [lr]");
    0x0002fb54 add r3, sp, 0x1f8                             |     r3 += var_1f8h;
    0x0002fb58 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fb5c add r5, pc, 0xcc                              |     r5 = pc + 0xcc;
    0x0002fb60 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fb64 add r3, sp, 0x1f0                             |     r3 += var_1f0h;
    0x0002fb68 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fb6c add r5, pc, 0xc4                              |     r5 = pc + 0xc4;
    0x0002fb70 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fb74 add r3, sp, 0x1e8                             |     r3 += var_1e8h;
    0x0002fb78 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fb7c add r5, pc, 0xbc                              |     r5 = pc + 0xbc;
    0x0002fb80 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fb84 add r3, sp, 0x1e0                             |     r3 += var_1e0h;
    0x0002fb88 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fb8c add r5, pc, 0xb4                              |     r5 = pc + 0xb4;
    0x0002fb90 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fb94 add r3, sp, 0x1d8                             |     r3 += var_1d8h;
    0x0002fb98 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fb9c add r5, pc, 0xac                              |     r5 = pc + 0xac;
    0x0002fba0 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fba4 add r3, sp, 0x1d0                             |     r3 += var_1d0h;
    0x0002fba8 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fbac add r5, pc, 0xa4                              |     r5 = pc + 0xa4;
    0x0002fbb0 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fbb4 add r3, sp, 0x1c8                             |     r3 += var_1c8h;
    0x0002fbb8 strd r4, r5, [r3]                             |     __asm ("strd r4, r5, [r3]");
    0x0002fbbc mov r2, r8                                    |     r2 = r8;
    0x0002fbc0 mov r3, sb                                    |     r3 = sb;
    0x0002fbc4 strd r2, r3, [sp, 0x20]                       |     __asm ("strd r2, r3, [var_20h]");
    0x0002fbc8 add r3, sp, 0x200                             |     r3 += var_200h;
    0x0002fbcc ldrd r2, r3, [r3]                             |     __asm ("ldrd r2, r3, [r3]");
    0x0002fbd0 add ip, pc, ip                                |     
    0x0002fbd4 strd r2, r3, [sp, 0x18]                       |     __asm ("strd r2, r3, [var_18h]");
    0x0002fbd8 add r3, sp, 0x208                             |     r3 += var_208h;
    0x0002fbdc ldrd r2, r3, [r3]                             |     __asm ("ldrd r2, r3, [r3]");
    0x0002fbe0 mov r8, sl                                    |     r8 = sl;
    0x0002fbe4 strd r2, r3, [sp, 8]                          |     __asm ("strd r2, r3, [var_ch]");
    0x0002fbe8 add r3, sp, 0x210                             |     r3 += var_210h;
    0x0002fbec mov sb, fp                                    |     sb = fp;
    0x0002fbf0 str ip, [sp, 0x1c4]                           |     var_1c4h = ip;
    0x0002fbf4 strd r0, r1, [sp, 0x28]                       |     __asm ("strd r0, r1, [var_28h]");
    0x0002fbf8 ldrd sl, fp, [r3]                             |     __asm ("ldrd sl, fp, [r3]");
    0x0002fbfc ldrd r2, r3, [lr]                             |     __asm ("ldrd r2, r3, [lr]");
    0x0002fc00 ldr lr, [sp, 0x30]                            |     lr = var_30h;
    0x0002fc04 strd r2, r3, [sp, 0x38]                       |     __asm ("strd r2, r3, [var_38h]");
    0x0002fc08 add r3, ip, 0x240                             |     r3 = ip + 0x240;
    0x0002fc0c add r5, pc, 0x4c                              |     r5 = pc + 0x4c;
    0x0002fc10 ldrd r4, r5, [r5]                             |     __asm ("ldrd r4, r5, [r5]");
    0x0002fc14 str r3, [sp, 0x220]                           |     var_220h = r3;
    0x0002fc18 strd r6, r7, [sp, 0x10]                       |     __asm ("strd r6, r7, [var_10h]");
    0x0002fc1c strd r8, sb, [sp]                             |     __asm ("strd r8, sb, [sp]");
    0x0002fc20 b 0x2fccc                                     |     
                                                             |     while (r2 != r3) {
    0x0002fc6c ldrd r0, r1, [r3, 0x48]                       |         __asm ("ldrd r0, r1, [r3, 0x48]");
    0x0002fc70 add r2, sp, 0x1c8                             |         r2 += var_1c8h;
    0x0002fc74 strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fc78 ldrd r0, r1, [r3, 0x50]                       |         __asm ("ldrd r0, r1, [r3, 0x50]");
    0x0002fc7c add r2, sp, 0x1d0                             |         r2 += var_1d0h;
    0x0002fc80 strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fc84 ldrd r0, r1, [r3, 0x58]                       |         __asm ("ldrd r0, r1, [r3, 0x58]");
    0x0002fc88 add r2, sp, 0x1d8                             |         r2 += var_1d8h;
    0x0002fc8c strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fc90 ldrd r0, r1, [r3, 0x60]                       |         __asm ("ldrd r0, r1, [r3, 0x60]");
    0x0002fc94 add r2, sp, 0x1e0                             |         r2 += var_1e0h;
    0x0002fc98 strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fc9c ldrd r0, r1, [r3, 0x68]                       |         __asm ("ldrd r0, r1, [r3, 0x68]");
    0x0002fca0 add r2, sp, 0x1e8                             |         r2 += var_1e8h;
    0x0002fca4 strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fca8 ldrd r0, r1, [r3, 0x70]                       |         __asm ("ldrd r0, r1, [r3, 0x70]");
    0x0002fcac add r2, sp, 0x1f0                             |         r2 += var_1f0h;
    0x0002fcb0 strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fcb4 ldrd r0, r1, [r3, 0x78]                       |         __asm ("ldrd r0, r1, [r3, 0x78]");
    0x0002fcb8 ldrd r4, r5, [r3, 0x40]                       |         __asm ("ldrd r4, r5, [r3, 0x40]");
    0x0002fcbc add r2, sp, 0x1f8                             |         r2 += var_1f8h;
    0x0002fcc0 add r3, r3, 0x40                              |         r3 += 0x40;
    0x0002fcc4 strd r0, r1, [r2]                             |         __asm ("strd r0, r1, [r2]");
    0x0002fcc8 str r3, [sp, 0x1c4]                           |         var_1c4h = r3;
    0x0002fccc ldrd r6, r7, [sp, 0x18]                       |         __asm ("ldrd r6, r7, [var_18h]");
    0x0002fcd0 add lr, lr, 0x40                              |         lr += 0x40;
    0x0002fcd4 lsr r2, r6, 0xe                               |         r2 = r6 >> 0xe;
    0x0002fcd8 orr r2, r2, r7, lsl 18                        |         r2 |= (r7 << 18);
    0x0002fcdc lsr r3, r6, 0x12                              |         r3 = r6 >> 0x12;
    0x0002fce0 str r2, [sp, 0x40]                            |         var_40h = r2;
    0x0002fce4 orr r3, r3, r7, lsl 14                        |         r3 |= (r7 << 14);
    0x0002fce8 lsr r1, r7, 0xe                               |         r1 = r7 >> 0xe;
    0x0002fcec lsr r2, r7, 0x12                              |         r2 = r7 >> 0x12;
    0x0002fcf0 str r3, [sp, 0x48]                            |         var_48h = r3;
    0x0002fcf4 orr r1, r1, r6, lsl 18                        |         r1 |= (r6 << 18);
    0x0002fcf8 orr r2, r2, r6, lsl 14                        |         r2 |= (r6 << 14);
    0x0002fcfc lsl r3, r7, 0x17                              |         r3 = r7 << 0x17;
    0x0002fd00 str r1, [sp, 0x44]                            |         var_44h = r1;
    0x0002fd04 str r2, [sp, 0x4c]                            |         var_4ch = r2;
    0x0002fd08 orr r3, r3, r6, lsr 9                         |         r3 |= (r6 >> 9);
    0x0002fd0c ldrd r8, sb, [sp, 0x48]                       |         __asm ("ldrd r8, sb, [var_48h]");
    0x0002fd10 str r3, [sp, 0x54]                            |         var_54h = r3;
    0x0002fd14 ldrd r0, r1, [sp, 8]                          |         __asm ("ldrd r0, r1, [var_ch]");
    0x0002fd18 ldrd r2, r3, [sp, 0x40]                       |         __asm ("ldrd r2, r3, [var_40h]");
    0x0002fd1c lsl ip, r6, 0x17                              |         
    0x0002fd20 orr ip, ip, r7, lsr 9                         |         
    0x0002fd24 eor r0, r0, sl                                |         r0 ^= sl;
    0x0002fd28 eor r1, r1, fp                                |         r1 ^= fp;
    0x0002fd2c eor r2, r2, r8                                |         r2 ^= r8;
    0x0002fd30 eor r3, r3, sb                                |         r3 ^= sb;
    0x0002fd34 str ip, [sp, 0x50]                            |         var_50h = ip;
    0x0002fd38 mov sb, r7                                    |         sb = r7;
    0x0002fd3c mov r8, r6                                    |         r8 = r6;
    0x0002fd40 and r8, r8, r0                                |         r8 &= r0;
    0x0002fd44 and sb, sb, r1                                |         sb &= r1;
    0x0002fd48 ldrd r0, r1, [sp, 0x50]                       |         __asm ("ldrd r0, r1, [var_54h]");
    0x0002fd4c eor r0, r0, r2                                |         r0 ^= r2;
    0x0002fd50 eor r1, r1, r3                                |         r1 ^= r3;
    0x0002fd54 mov r6, r0                                    |         r6 = r0;
    0x0002fd58 eor r0, r8, sl                                |         r0 = r8 ^ sl;
    0x0002fd5c adds r2, r6, r0                               |         r2 = r6 + r0;
    0x0002fd60 mov r7, r1                                    |         r7 = r1;
    0x0002fd64 eor r1, sb, fp                                |         r1 = sb ^ fp;
    0x0002fd68 adc r3, r7, r1                                |         __asm ("adc r3, r7, r1");
    0x0002fd6c ldrd r0, r1, [lr, -0x40]                      |         __asm ("ldrd r0, r1, [lr, -0x40]");
    0x0002fd70 ldrd r8, sb, [sp, 0x10]                       |         __asm ("ldrd r8, sb, [var_10h]");
    0x0002fd74 adds r0, r0, r2                               |         r0 += r2;
    0x0002fd78 adc r1, r1, r3                                |         __asm ("adc r1, r1, r3");
    0x0002fd7c mov r2, r0                                    |         r2 = r0;
    0x0002fd80 mov r3, r1                                    |         r3 = r1;
    0x0002fd84 ldrd r0, r1, [sp, 0x38]                       |         __asm ("ldrd r0, r1, [var_38h]");
    0x0002fd88 adds r0, r0, r2                               |         r0 += r2;
    0x0002fd8c adc r1, r1, r3                                |         __asm ("adc r1, r1, r3");
    0x0002fd90 ldrd r2, r3, [sp]                             |         __asm ("ldrd r2, r3, [sp]");
    0x0002fd94 adds r6, r0, r4                               |         r6 = r0 + r4;
    0x0002fd98 adc r7, r1, r5                                |         __asm ("adc r7, r1, r5");
    0x0002fd9c adds r2, r2, r6                               |         r2 += r6;
    0x0002fda0 adc r3, r3, r7                                |         __asm ("adc r3, r3, r7");
    0x0002fda4 ldrd r4, r5, [lr, -0x38]                      |         __asm ("ldrd r4, r5, [lr, -0x38]");
    0x0002fda8 strd r6, r7, [sp, 0x30]                       |         __asm ("strd r6, r7, [var_30h]");
    0x0002fdac lsr r0, r2, 0xe                               |         r0 = r2 >> 0xe;
    0x0002fdb0 mov r7, r3                                    |         r7 = r3;
    0x0002fdb4 lsr r1, r8, 0x1c                              |         r1 = r8 >> 0x1c;
    0x0002fdb8 orr ip, r0, r7, lsl 18                        |         
    0x0002fdbc orr r1, r1, sb, lsl 4                         |         r1 |= (sb << 4);
    0x0002fdc0 lsr r0, r7, 0xe                               |         r0 = r7 >> 0xe;
    0x0002fdc4 mov r6, r2                                    |         r6 = r2;
    0x0002fdc8 str r0, [sp, 0x10]                            |         var_10h = r0;
    0x0002fdcc str ip, [sp, 0x70]                            |         var_70h = ip;
    0x0002fdd0 str r1, [sp, 0x58]                            |         var_58h = r1;
    0x0002fdd4 lsr ip, r7, 0x12                              |         
    0x0002fdd8 lsl r1, r8, 0x1e                              |         r1 = r8 << 0x1e;
    0x0002fddc lsr r2, r2, 0x12                              |         r2 >>= 0x12;
    0x0002fde0 orr r2, r2, r7, lsl 14                        |         r2 |= (r7 << 14);
    0x0002fde4 lsr r0, sb, 0x1c                              |         r0 = sb >> 0x1c;
    0x0002fde8 strd r4, r5, [sp]                             |         __asm ("strd r4, r5, [sp]");
    0x0002fdec ldr r4, [sp, 0x10]                            |         r4 = var_10h;
    0x0002fdf0 orr ip, ip, r6, lsl 14                        |         
    0x0002fdf4 orr r1, r1, sb, lsr 2                         |         r1 |= (sb >> 2);
    0x0002fdf8 lsl r3, sb, 0x1e                              |         r3 = sb << 0x1e;
    0x0002fdfc orr r3, r3, r8, lsr 2                         |         r3 |= (r8 >> 2);
    0x0002fe00 str r2, [sp, 0x78]                            |         var_78h = r2;
    0x0002fe04 str ip, [sp, 0x7c]                            |         var_7ch = ip;
    0x0002fe08 lsl r2, r7, 0x17                              |         r2 = r7 << 0x17;
    0x0002fe0c orr ip, r0, r8, lsl 4                         |         
    0x0002fe10 str r1, [sp, 0x60]                            |         var_60h = r1;
    0x0002fe14 ldrd r0, r1, [sp, 0x28]                       |         __asm ("ldrd r0, r1, [var_28h]");
    0x0002fe18 orr r2, r2, r6, lsr 9                         |         r2 |= (r6 >> 9);
    0x0002fe1c str r3, [sp, 0x64]                            |         var_64h = r3;
    0x0002fe20 lsl r3, sb, 0x19                              |         r3 = sb << 0x19;
    0x0002fe24 orr r5, r4, r6, lsl 18                        |         r5 = r4 | (r6 << 18);
    0x0002fe28 orr r3, r3, r8, lsr 7                         |         r3 |= (r8 >> 7);
    0x0002fe2c str r2, [sp, 0x84]                            |         var_84h = r2;
    0x0002fe30 lsl r2, r6, 0x17                              |         r2 = r6 << 0x17;
    0x0002fe34 mov r4, r8                                    |         r4 = r8;
    0x0002fe38 str r5, [sp, 0x74]                            |         var_74h = r5;
    0x0002fe3c str ip, [sp, 0x5c]                            |         var_5ch = ip;
    0x0002fe40 mov r5, sb                                    |         r5 = sb;
    0x0002fe44 lsl ip, r8, 0x19                              |         
    0x0002fe48 str r3, [sp, 0x6c]                            |         var_6ch = r3;
    0x0002fe4c orr r8, r8, r0                                |         r8 |= r0;
    0x0002fe50 orr r3, r2, r7, lsr 9                         |         r3 = r2 | (r7 >> 9);
    0x0002fe54 orr sb, sb, r1                                |         sb |= r1;
    0x0002fe58 mov r0, r8                                    |         r0 = r8;
    0x0002fe5c mov r1, sb                                    |         r1 = sb;
    0x0002fe60 strd r4, r5, [sp, 0x10]                       |         __asm ("strd r4, r5, [var_10h]");
    0x0002fe64 str r3, [sp, 0x80]                            |         var_80h = r3;
    0x0002fe68 ldrd r2, r3, [sp, 0x60]                       |         __asm ("ldrd r2, r3, [var_60h]");
    0x0002fe6c ldrd r8, sb, [sp, 0x10]                       |         __asm ("ldrd r8, sb, [var_10h]");
    0x0002fe70 ldrd r4, r5, [sp, 0x58]                       |         __asm ("ldrd r4, r5, [var_58h]");
    0x0002fe74 eor r5, r5, r3                                |         r5 ^= r3;
    0x0002fe78 orr r3, ip, sb, lsr 7                         |         r3 = ip | (sb >> 7);
    0x0002fe7c eor r4, r4, r2                                |         r4 ^= r2;
    0x0002fe80 str r3, [sp, 0x68]                            |         var_68h = r3;
    0x0002fe84 ldrd r2, r3, [sp, 0x20]                       |         __asm ("ldrd r2, r3, [var_20h]");
    0x0002fe88 and r2, r2, r0                                |         r2 &= r0;
    0x0002fe8c and r3, r3, r1                                |         r3 &= r1;
    0x0002fe90 mov r0, r2                                    |         r0 = r2;
    0x0002fe94 mov r1, r3                                    |         r1 = r3;
    0x0002fe98 ldrd r2, r3, [sp, 0x28]                       |         __asm ("ldrd r2, r3, [var_28h]");
    0x0002fe9c and r8, r8, r2                                |         r8 &= r2;
    0x0002fea0 and sb, sb, r3                                |         sb &= r3;
    0x0002fea4 mov r2, r8                                    |         r2 = r8;
    0x0002fea8 mov r3, sb                                    |         r3 = sb;
    0x0002feac ldrd r8, sb, [sp]                             |         __asm ("ldrd r8, sb, [sp]");
    0x0002feb0 adds r8, r8, sl                               |         r8 += sl;
    0x0002feb4 adc sb, sb, fp                                |         __asm ("adc sb, sb, fp");
    0x0002feb8 strd r8, sb, [sp, 0x38]                       |         __asm ("strd r8, sb, [var_38h]");
    0x0002febc ldrd sl, fp, [sp, 0x18]                       |         __asm ("ldrd sl, fp, [var_18h]");
    0x0002fec0 ldrd r8, sb, [sp, 8]                          |         __asm ("ldrd r8, sb, [var_ch]");
    0x0002fec4 eor sl, sl, r8                                |         sl ^= r8;
    0x0002fec8 eor fp, fp, sb                                |         
    0x0002fecc mov r8, r6                                    |         r8 = r6;
    0x0002fed0 mov sb, r7                                    |         sb = r7;
    0x0002fed4 and r8, r8, sl                                |         r8 &= sl;
    0x0002fed8 and sb, sb, fp                                |         sb &= fp;
    0x0002fedc mov sl, r8                                    |         sl = r8;
    0x0002fee0 mov fp, sb                                    |         
    0x0002fee4 ldrd r8, sb, [sp, 8]                          |         __asm ("ldrd r8, sb, [var_ch]");
    0x0002fee8 eor r8, r8, sl                                |         r8 ^= sl;
    0x0002feec eor sb, sb, fp                                |         sb ^= fp;
    0x0002fef0 mov sl, r8                                    |         sl = r8;
    0x0002fef4 mov fp, sb                                    |         
    0x0002fef8 ldrd r8, sb, [sp, 0x68]                       |         __asm ("ldrd r8, sb, [var_6ch]");
    0x0002fefc eor r8, r8, r4                                |         r8 ^= r4;
    0x0002ff00 eor sb, sb, r5                                |         sb ^= r5;
    0x0002ff04 mov r4, r8                                    |         r4 = r8;
    0x0002ff08 mov r5, sb                                    |         r5 = sb;
    0x0002ff0c orr r8, r2, r0                                |         r8 = r2 | r0;
    0x0002ff10 orr sb, r3, r1                                |         sb = r3 | r1;
    0x0002ff14 ldrd r2, r3, [sp, 0x38]                       |         __asm ("ldrd r2, r3, [var_38h]");
    0x0002ff18 ldrd r0, r1, [sp, 0x70]                       |         __asm ("ldrd r0, r1, [var_70h]");
    0x0002ff1c adds r2, r2, sl                               |         r2 += sl;
    0x0002ff20 adc r3, r3, fp                                |         __asm ("adc r3, r3, fp");
    0x0002ff24 ldrd sl, fp, [sp, 0x78]                       |         __asm ("ldrd sl, fp, [var_78h]");
    0x0002ff28 strd r8, sb, [sp]                             |         __asm ("strd r8, sb, [sp]");
    0x0002ff2c strd r2, r3, [sp, 0x38]                       |         __asm ("strd r2, r3, [var_38h]");
    0x0002ff30 ldrd r2, r3, [sp]                             |         __asm ("ldrd r2, r3, [sp]");
    0x0002ff34 eor r0, r0, sl                                |         r0 ^= sl;
    0x0002ff38 eor r1, r1, fp                                |         r1 ^= fp;
    0x0002ff3c mov r8, r0                                    |         r8 = r0;
    0x0002ff40 mov sb, r1                                    |         sb = r1;
    0x0002ff44 ldrd r0, r1, [sp, 0x80]                       |         __asm ("ldrd r0, r1, [var_84h]");
    0x0002ff48 adds r2, r2, r4                               |         r2 += r4;
    0x0002ff4c ldrd sl, fp, [sp, 0x38]                       |         __asm ("ldrd sl, fp, [var_38h]");
    0x0002ff50 adc r3, r3, r5                                |         __asm ("adc r3, r3, r5");
    0x0002ff54 ldrd r4, r5, [sp, 0x30]                       |         __asm ("ldrd r4, r5, [var_30h]");
    0x0002ff58 eor r0, r0, r8                                |         r0 ^= r8;
    0x0002ff5c adds sl, sl, r0                               |         sl += r0;
    0x0002ff60 eor r1, r1, sb                                |         r1 ^= sb;
    0x0002ff64 adc fp, fp, r1                                |         __asm ("adc fp, fp, r1");
    0x0002ff68 adds r4, r4, r2                               |         r4 += r2;
    0x0002ff6c adc r5, r5, r3                                |         __asm ("adc r5, r5, r3");
    0x0002ff70 add r3, sp, 0x1c8                             |         r3 += var_1c8h;
    0x0002ff74 ldrd r0, r1, [r3]                             |         __asm ("ldrd r0, r1, [r3]");
    0x0002ff78 ldrd r8, sb, [sp, 0x20]                       |         __asm ("ldrd r8, sb, [var_20h]");
    0x0002ff7c adds r0, r0, sl                               |         r0 += sl;
    0x0002ff80 adc r1, r1, fp                                |         __asm ("adc r1, r1, fp");
    0x0002ff84 lsr r2, r4, 0x1c                              |         r2 = r4 >> 0x1c;
    0x0002ff88 adds sl, r0, r8                               |         sl = r0 + r8;
    0x0002ff8c adc fp, r1, sb                                |         __asm ("adc fp, r1, sb");
    0x0002ff90 strd r0, r1, [sp, 0x38]                       |         __asm ("strd r0, r1, [var_38h]");
    0x0002ff94 orr r1, r2, r5, lsl 4                         |         r1 = r2 | (r5 << 4);
    0x0002ff98 lsl r3, r5, 0x1e                              |         r3 = r5 << 0x1e;
    0x0002ff9c str r1, [sp, 0x88]                            |         var_88h = r1;
    0x0002ffa0 lsl r1, r5, 0x19                              |         r1 = r5 << 0x19;
    0x0002ffa4 mov sb, fp                                    |         sb = fp;
    0x0002ffa8 orr r3, r3, r4, lsr 2                         |         r3 |= (r4 >> 2);
    0x0002ffac lsr r2, sl, 0xe                               |         r2 = sl >> 0xe;
    0x0002ffb0 orr r1, r1, r4, lsr 7                         |         r1 |= (r4 >> 7);
    0x0002ffb4 lsr ip, r5, 0x1c                              |         
    0x0002ffb8 mov r8, sl                                    |         r8 = sl;
    0x0002ffbc lsl r0, r4, 0x1e                              |         r0 = r4 << 0x1e;
    0x0002ffc0 orr ip, ip, r4, lsl 4                         |         
    0x0002ffc4 str r3, [sp, 0x94]                            |         var_94h = r3;
    0x0002ffc8 str r1, [sp, 0x9c]                            |         var_9ch = r1;
    0x0002ffcc lsr r3, sl, 0x12                              |         r3 = sl >> 0x12;
    0x0002ffd0 orr r1, r2, sb, lsl 18                        |         r1 = r2 | (sb << 18);
    0x0002ffd4 orr r3, r3, sb, lsl 14                        |         r3 |= (sb << 14);
    0x0002ffd8 lsr r2, sb, 0x12                              |         r2 = sb >> 0x12;
    0x0002ffdc strd r8, sb, [sp, 0x20]                       |         __asm ("strd r8, sb, [var_20h]");
    0x0002ffe0 str ip, [sp, 0x8c]                            |         var_8ch = ip;
    0x0002ffe4 mov r8, r4                                    |         r8 = r4;
    0x0002ffe8 orr ip, r0, r5, lsr 2                         |         
    0x0002ffec str r1, [sp, 0xa0]                            |         var_a0h = r1;
    0x0002fff0 lsl r0, r4, 0x19                              |         r0 = r4 << 0x19;
    0x0002fff4 lsr r1, sb, 0xe                               |         r1 = sb >> 0xe;
    0x0002fff8 mov sb, r5                                    |         sb = r5;
    0x0002fffc str ip, [sp, 0x90]                            |         var_90h = ip;
    0x00030000 str r3, [sp, 0xa8]                            |         var_a8h = r3;
    0x00030004 orr ip, r0, sb, lsr 7                         |         
    0x00030008 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x0003000c ldrd sl, fp, [sp, 0x10]                       |         __asm ("ldrd sl, fp, [var_10h]");
    0x00030010 strd r8, sb, [sp]                             |         __asm ("strd r8, sb, [sp]");
    0x00030014 ldrd r8, sb, [sp, 0x20]                       |         __asm ("ldrd r8, sb, [var_20h]");
    0x00030018 orr sl, sl, r4                                |         sl |= r4;
    0x0003001c orr r1, r1, r8, lsl 18                        |         r1 |= (r8 << 18);
    0x00030020 orr fp, fp, r5                                |         
    0x00030024 mov r4, sl                                    |         r4 = sl;
    0x00030028 mov r5, fp                                    |         r5 = fp;
    0x0003002c str r1, [sp, 0xa4]                            |         var_a4h = r1;
    0x00030030 ldrd sl, fp, [sp, 0x90]                       |         __asm ("ldrd sl, fp, [var_94h]");
    0x00030034 ldrd r0, r1, [sp, 0x88]                       |         __asm ("ldrd r0, r1, [var_88h]");
    0x00030038 lsl r3, r3, 0x17                              |         r3 <<= 0x17;
    0x0003003c orr r3, r3, r8, lsr 9                         |         r3 |= (r8 >> 9);
    0x00030040 eor r0, r0, sl                                |         r0 ^= sl;
    0x00030044 eor r1, r1, fp                                |         r1 ^= fp;
    0x00030048 str ip, [sp, 0x98]                            |         var_98h = ip;
    0x0003004c str r3, [sp, 0xb4]                            |         var_b4h = r3;
    0x00030050 orr ip, r2, r8, lsl 14                        |         
    0x00030054 mov sb, r1                                    |         sb = r1;
    0x00030058 lsl r3, r8, 0x17                              |         r3 = r8 << 0x17;
    0x0003005c mov r8, r0                                    |         r8 = r0;
    0x00030060 ldrd r0, r1, [sp, 0x28]                       |         __asm ("ldrd r0, r1, [var_28h]");
    0x00030064 strd r6, r7, [sp, 0x30]                       |         __asm ("strd r6, r7, [var_30h]");
    0x00030068 and r0, r0, r4                                |         r0 &= r4;
    0x0003006c and r1, r1, r5                                |         r1 &= r5;
    0x00030070 mov r4, r0                                    |         r4 = r0;
    0x00030074 mov r5, r1                                    |         r5 = r1;
    0x00030078 ldrd r0, r1, [sp, 0x18]                       |         __asm ("ldrd r0, r1, [var_18h]");
    0x0003007c str ip, [sp, 0xac]                            |         var_ach = ip;
    0x00030080 eor r0, r0, r6                                |         r0 ^= r6;
    0x00030084 eor r1, r1, r7                                |         r1 ^= r7;
    0x00030088 ldrd r6, r7, [sp, 0x20]                       |         __asm ("ldrd r6, r7, [var_20h]");
    0x0003008c add ip, sp, 0x1d0                             |         
    0x00030090 mov sl, r6                                    |         sl = r6;
    0x00030094 mov fp, r7                                    |         
    0x00030098 orr r3, r3, r7, lsr 9                         |         r3 |= (r7 >> 9);
    0x0003009c and sl, sl, r0                                |         sl &= r0;
    0x000300a0 and fp, fp, r1                                |         
    0x000300a4 mov r0, sl                                    |         r0 = sl;
    0x000300a8 mov r1, fp                                    |         r1 = fp;
    0x000300ac str r3, [sp, 0xb0]                            |         var_b0h = r3;
    0x000300b0 ldrd sl, fp, [sp, 0x10]                       |         __asm ("ldrd sl, fp, [var_10h]");
    0x000300b4 ldrd r2, r3, [sp]                             |         __asm ("ldrd r2, r3, [sp]");
    0x000300b8 ldrd r6, r7, [sp, 0xa8]                       |         __asm ("ldrd r6, r7, [var_a8h]");
    0x000300bc and sl, sl, r2                                |         sl &= r2;
    0x000300c0 and fp, fp, r3                                |         
    0x000300c4 mov r2, sl                                    |         r2 = sl;
    0x000300c8 mov r3, fp                                    |         r3 = fp;
    0x000300cc orr r2, r2, r4                                |         r2 |= r4;
    0x000300d0 ldrd sl, fp, [sp, 0x98]                       |         __asm ("ldrd sl, fp, [var_9ch]");
    0x000300d4 orr r3, r3, r5                                |         r3 |= r5;
    0x000300d8 ldrd r4, r5, [sp, 0x18]                       |         __asm ("ldrd r4, r5, [var_18h]");
    0x000300dc eor sl, sl, r8                                |         sl ^= r8;
    0x000300e0 eor r4, r4, r0                                |         r4 ^= r0;
    0x000300e4 eor r5, r5, r1                                |         r5 ^= r1;
    0x000300e8 eor fp, fp, sb                                |         
    0x000300ec ldrd r0, r1, [lr, -0x30]                      |         __asm ("ldrd r0, r1, [lr, -0x30]");
    0x000300f0 ldrd r8, sb, [sp, 8]                          |         __asm ("ldrd r8, sb, [var_ch]");
    0x000300f4 adds r0, r0, r8                               |         r0 += r8;
    0x000300f8 adc r1, r1, sb                                |         __asm ("adc r1, r1, sb");
    0x000300fc adds sl, sl, r2                               |         sl += r2;
    0x00030100 ldrd r8, sb, [sp, 0xa0]                       |         __asm ("ldrd r8, sb, [var_a0h]");
    0x00030104 adc fp, fp, r3                                |         __asm ("adc fp, fp, r3");
    0x00030108 mov r2, sl                                    |         r2 = sl;
    0x0003010c mov r3, fp                                    |         r3 = fp;
    0x00030110 ldrd sl, fp, [sp, 0xb0]                       |         __asm ("ldrd sl, fp, [var_b4h]");
    0x00030114 eor r8, r8, r6                                |         r8 ^= r6;
    0x00030118 eor sb, sb, r7                                |         sb ^= r7;
    0x0003011c eor sl, sl, r8                                |         sl ^= r8;
    0x00030120 ldrd r6, r7, [sp, 0x38]                       |         __asm ("ldrd r6, r7, [var_38h]");
    0x00030124 mov r8, sl                                    |         r8 = sl;
    0x00030128 eor fp, fp, sb                                |         
    0x0003012c adds sl, r0, r4                               |         sl = r0 + r4;
    0x00030130 mov sb, fp                                    |         sb = fp;
    0x00030134 adc fp, r1, r5                                |         __asm ("adc fp, r1, r5");
    0x00030138 ldrd r4, r5, [ip]                             |         __asm ("ldrd r4, r5, [ip]");
    0x0003013c adds r6, r6, r2                               |         r6 += r2;
    0x00030140 adc r7, r7, r3                                |         __asm ("adc r7, r7, r3");
    0x00030144 adds r0, sl, r8                               |         r0 = sl + r8;
    0x00030148 adc r1, fp, sb                                |         __asm ("adc r1, fp, sb");
    0x0003014c lsr r2, r6, 0x1c                              |         r2 = r6 >> 0x1c;
    0x00030150 adds r4, r4, r0                               |         r4 += r0;
    0x00030154 adc r5, r5, r1                                |         __asm ("adc r5, r5, r1");
    0x00030158 lsl r3, r7, 0x1e                              |         r3 = r7 << 0x1e;
    0x0003015c orr r1, r2, r7, lsl 4                         |         r1 = r2 | (r7 << 4);
    0x00030160 orr r3, r3, r6, lsr 2                         |         r3 |= (r6 >> 2);
    0x00030164 str r1, [sp, 0xb8]                            |         var_b8h = r1;
    0x00030168 lsr r1, r7, 0x1c                              |         r1 = r7 >> 0x1c;
    0x0003016c lsl r2, r6, 0x1e                              |         r2 = r6 << 0x1e;
    0x00030170 orr r1, r1, r6, lsl 4                         |         r1 |= (r6 << 4);
    0x00030174 str r3, [sp, 0xc4]                            |         var_c4h = r3;
    0x00030178 lsl r3, r7, 0x19                              |         r3 = r7 << 0x19;
    0x0003017c ldrd sl, fp, [sp, 0x28]                       |         __asm ("ldrd sl, fp, [var_28h]");
    0x00030180 orr r3, r3, r6, lsr 7                         |         r3 |= (r6 >> 7);
    0x00030184 str r1, [sp, 0xbc]                            |         var_bch = r1;
    0x00030188 orr r1, r2, r7, lsr 2                         |         r1 = r2 | (r7 >> 2);
    0x0003018c strd r4, r5, [sp, 0x38]                       |         __asm ("strd r4, r5, [var_38h]");
    0x00030190 str r1, [sp, 0xc0]                            |         var_c0h = r1;
    0x00030194 str r3, [sp, 0xcc]                            |         var_cch = r3;
    0x00030198 ldrd r2, r3, [sp]                             |         __asm ("ldrd r2, r3, [sp]");
    0x0003019c adds sl, sl, r4                               |         sl += r4;
    0x000301a0 adc fp, fp, r5                                |         __asm ("adc fp, fp, r5");
    0x000301a4 mov r4, r6                                    |         r4 = r6;
    0x000301a8 mov r5, r7                                    |         r5 = r7;
    0x000301ac lsl ip, r6, 0x19                              |         
    0x000301b0 orr r7, r7, r3                                |         r7 |= r3;
    0x000301b4 orr r6, r6, r2                                |         r6 |= r2;
    0x000301b8 mov r8, r6                                    |         r8 = r6;
    0x000301bc mov sb, r7                                    |         sb = r7;
    0x000301c0 strd r8, sb, [sp]                             |         __asm ("strd r8, sb, [sp]");
    0x000301c4 ldrd r6, r7, [sp, 0xc0]                       |         __asm ("ldrd r6, r7, [var_c4h]");
    0x000301c8 ldrd r8, sb, [sp, 0xb8]                       |         __asm ("ldrd r8, sb, [var_b8h]");
    0x000301cc strd r4, r5, [sp, 8]                          |         __asm ("strd r4, r5, [var_ch]");
    0x000301d0 eor r8, r8, r6                                |         r8 ^= r6;
    0x000301d4 eor sb, sb, r7                                |         sb ^= r7;
    0x000301d8 orr ip, ip, r5, lsr 7                         |         
    0x000301dc ldrd r6, r7, [sp, 0x10]                       |         __asm ("ldrd r6, r7, [var_10h]");
    0x000301e0 mov r4, r8                                    |         r4 = r8;
    0x000301e4 mov r5, sb                                    |         r5 = sb;
    0x000301e8 ldrd r8, sb, [sp]                             |         __asm ("ldrd r8, sb, [sp]");
    0x000301ec str ip, [sp, 0xc8]                            |         var_c8h = ip;
    0x000301f0 and r8, r8, r6                                |         r8 &= r6;
    0x000301f4 and sb, sb, r7                                |         sb &= r7;
    0x000301f8 strd r8, sb, [sp, 0x28]                       |         __asm ("strd r8, sb, [var_28h]");
    0x000301fc ldrd r8, sb, [sp, 8]                          |         __asm ("ldrd r8, sb, [var_ch]");
    0x00030200 strd r2, r3, [sp]                             |         __asm ("strd r2, r3, [sp]");
    0x00030204 and r8, r8, r2                                |         r8 &= r2;
    0x00030208 and sb, sb, r3                                |         sb &= r3;
    0x0003020c mov r2, r8                                    |         r2 = r8;
    0x00030210 mov r3, sb                                    |         r3 = sb;
    0x00030214 ldrd r8, sb, [sp, 0xc8]                       |         __asm ("ldrd r8, sb, [var_cch]");
    0x00030218 lsr r1, sl, 0x12                              |         r1 = sl >> 0x12;
    0x0003021c lsr r0, sl, 0xe                               |         r0 = sl >> 0xe;
    0x00030220 orr r1, r1, fp, lsl 14                        |         r1 |= (fp << 14);
    0x00030224 eor r8, r8, r4                                |         r8 ^= r4;
    0x00030228 eor sb, sb, r5                                |         sb ^= r5;
    0x0003022c orr ip, r0, fp, lsl 18                        |         
    0x00030230 str r1, [sp, 0xd8]                            |         var_d8h = r1;
    0x00030234 lsr r0, fp, 0xe                               |         r0 = fp >> 0xe;
    0x00030238 mov r4, r8                                    |         r4 = r8;
    0x0003023c mov r5, sb                                    |         r5 = sb;
    0x00030240 lsr r1, fp, 0x12                              |         r1 = fp >> 0x12;
    0x00030244 ldrd r8, sb, [sp, 0x28]                       |         __asm ("ldrd r8, sb, [var_28h]");
    0x00030248 orr r7, r0, sl, lsl 18                        |         r7 = r0 | (sl << 18);
    0x0003024c str ip, [sp, 0xd0]                            |         var_d0h = ip;
    0x00030250 orr r1, r1, sl, lsl 14                        |         r1 |= (sl << 14);
    0x00030254 lsl ip, fp, 0x17                              |         
    0x00030258 str r7, [sp, 0xd4]                            |         var_d4h = r7;
    0x0003025c str r1, [sp, 0xdc]                            |         var_dch = r1;
    0x00030260 ldrd r6, r7, [sp, 0x30]                       |         __asm ("ldrd r6, r7, [var_30h]");
    0x00030264 ldrd r0, r1, [sp, 0x20]                       |         __asm ("ldrd r0, r1, [var_20h]");
    0x00030268 orr ip, ip, sl, lsr 9                         |         
    0x0003026c str ip, [sp, 0xe4]                            |         var_e4h = ip;
    0x00030270 orr r8, r8, r2                                |         r8 |= r2;
    0x00030274 lsl ip, sl, 0x17                              |         
    0x00030278 orr sb, sb, r3                                |         sb |= r3;
    0x0003027c strd r8, sb, [sp, 0x30]                       |         __asm ("strd r8, sb, [var_30h]");
    0x00030280 orr r3, ip, fp, lsr 9                         |         r3 = ip | (fp >> 9);
    0x00030284 eor r0, r0, r6                                |         r0 ^= r6;
    0x00030288 eor r1, r1, r7                                |         r1 ^= r7;
    0x0003028c str r3, [sp, 0xe0]                            |         var_e0h = r3;
    0x00030290 mov r8, sl                                    |         r8 = sl;
    0x00030294 ldrd r2, r3, [sp, 0x30]                       |         __asm ("ldrd r2, r3, [var_30h]");
    0x00030298 mov sb, fp                                    |         sb = fp;
    0x0003029c and r8, r8, r0                                |         r8 &= r0;
    0x000302a0 and sb, sb, r1                                |         sb &= r1;
    0x000302a4 mov r0, r8                                    |         r0 = r8;
    0x000302a8 mov r1, sb                                    |         r1 = sb;
    0x000302ac strd sl, fp, [sp, 0x28]                       |         __asm ("strd sl, fp, [var_0hx28]");
    0x000302b0 ldrd r8, sb, [sp, 0xd0]                       |         __asm ("ldrd r8, sb, [var_d0h]");
    0x000302b4 ldrd sl, fp, [sp, 0xd8]                       |         __asm ("ldrd sl, fp, [var_d8h]");
    0x000302b8 adds r2, r2, r4                               |         r2 += r4;
    0x000302bc adc r3, r3, r5                                |         __asm ("adc r3, r3, r5");
    0x000302c0 mov r4, r6                                    |         r4 = r6;
    0x000302c4 mov r5, r7                                    |         r5 = r7;
    0x000302c8 eor r8, r8, sl                                |         r8 ^= sl;
    0x000302cc eor sb, sb, fp                                |         sb ^= fp;
    0x000302d0 mov sl, r6                                    |         sl = r6;
    0x000302d4 mov fp, r7                                    |         
    0x000302d8 eor r4, r4, r0                                |         r4 ^= r0;
    0x000302dc ldrd r6, r7, [lr, -0x28]                      |         __asm ("ldrd r6, r7, [lr, -0x28]");
    0x000302e0 eor r5, r5, r1                                |         r5 ^= r1;
    0x000302e4 ldrd r0, r1, [sp, 0x18]                       |         __asm ("ldrd r0, r1, [var_18h]");
    0x000302e8 adds r0, r0, r6                               |         r0 += r6;
    0x000302ec adc r1, r1, r7                                |         __asm ("adc r1, r1, r7");
    0x000302f0 ldrd r6, r7, [sp, 0x38]                       |         __asm ("ldrd r6, r7, [var_38h]");
    0x000302f4 strd r0, r1, [sp, 0x18]                       |         __asm ("strd r0, r1, [var_18h]");
    0x000302f8 adds r6, r6, r2                               |         r6 += r2;
    0x000302fc adc r7, r7, r3                                |         __asm ("adc r7, r7, r3");
    0x00030300 ldrd r2, r3, [sp, 0x18]                       |         __asm ("ldrd r2, r3, [var_18h]");
    0x00030304 ldrd r0, r1, [sp, 0xe0]                       |         __asm ("ldrd r0, r1, [var_e4h]");
    0x00030308 adds r2, r2, r4                               |         r2 += r4;
    0x0003030c adc r3, r3, r5                                |         __asm ("adc r3, r3, r5");
    0x00030310 eor r0, r0, r8                                |         r0 ^= r8;
    0x00030314 eor r1, r1, sb                                |         r1 ^= sb;
    0x00030318 mov r8, r0                                    |         r8 = r0;
    0x0003031c mov sb, r1                                    |         sb = r1;
    0x00030320 mov r0, r2                                    |         r0 = r2;
    0x00030324 mov r1, r3                                    |         r1 = r3;
    0x00030328 lsr r2, r6, 0x1c                              |         r2 = r6 >> 0x1c;
    0x0003032c lsl r3, r7, 0x1e                              |         r3 = r7 << 0x1e;
    0x00030330 adds r8, r8, r0                               |         r8 += r0;
    0x00030334 orr ip, r2, r7, lsl 4                         |         
    0x00030338 orr r3, r3, r6, lsr 2                         |         r3 |= (r6 >> 2);
    0x0003033c add r4, sp, 0x1d8                             |         r4 += var_1d8h;
    0x00030340 str ip, [sp, 0xe8]                            |         var_e8h = ip;
    0x00030344 mov r0, r6                                    |         r0 = r6;
    0x00030348 adc sb, sb, r1                                |         __asm ("adc sb, sb, r1");
    0x0003034c lsr r2, r7, 0x1c                              |         r2 = r7 >> 0x1c;
    0x00030350 mov r1, r7                                    |         r1 = r7;
    0x00030354 str r3, [sp, 0xf4]                            |         var_f4h = r3;
    0x00030358 lsl ip, r6, 0x1e                              |         
    0x0003035c lsl r3, r7, 0x19                              |         r3 = r7 << 0x19;
    0x00030360 ldrd r6, r7, [r4]                             |         __asm ("ldrd r6, r7, [r4]");
    0x00030364 orr r3, r3, r0, lsr 7                         |         r3 |= (r0 >> 7);
    0x00030368 adds r6, r6, r8                               |         r6 += r8;
    0x0003036c adc r7, r7, sb                                |         __asm ("adc r7, r7, sb");
    0x00030370 mov r8, r0                                    |         r8 = r0;
    0x00030374 mov sb, r1                                    |         sb = r1;
    0x00030378 orr r5, r2, r0, lsl 4                         |         r5 = r2 | (r0 << 4);
    0x0003037c orr ip, ip, r1, lsr 2                         |         
    0x00030380 str r3, [sp, 0xfc]                            |         var_fch = r3;
    0x00030384 lsl r3, r0, 0x19                              |         r3 = r0 << 0x19;
    0x00030388 ldrd r0, r1, [sp, 0x10]                       |         __asm ("ldrd r0, r1, [var_10h]");
    0x0003038c str r5, [sp, 0xec]                            |         var_ech = r5;
    0x00030390 ldrd r4, r5, [sp, 8]                          |         __asm ("ldrd r4, r5, [var_ch]");
    0x00030394 adds r0, r0, r6                               |         r0 += r6;
    0x00030398 adc r1, r1, r7                                |         __asm ("adc r1, r1, r7");
    0x0003039c strd r6, r7, [sp, 0x30]                       |         __asm ("strd r6, r7, [var_30h]");
    0x000303a0 orr r4, r4, r8                                |         r4 |= r8;
    0x000303a4 mov r6, r0                                    |         r6 = r0;
    0x000303a8 mov r7, r1                                    |         r7 = r1;
    0x000303ac orr r5, r5, sb                                |         r5 |= sb;
    0x000303b0 str ip, [sp, 0xf0]                            |         var_f0h = ip;
    0x000303b4 mov r0, r4                                    |         r0 = r4;
    0x000303b8 mov r1, r5                                    |         r1 = r5;
    0x000303bc mov r4, r6                                    |         r4 = r6;
    0x000303c0 orr r3, r3, sb, lsr 7                         |         r3 |= (sb >> 7);
    0x000303c4 mov r5, r7                                    |         r5 = r7;
    0x000303c8 strd r4, r5, [sp, 0x10]                       |         __asm ("strd r4, r5, [var_10h]");
    0x000303cc str r3, [sp, 0xf8]                            |         var_f8h = r3;
    0x000303d0 lsr ip, r4, 0x12                              |         
    0x000303d4 ldrd r2, r3, [sp, 0xf0]                       |         __asm ("ldrd r2, r3, [var_f4h]");
    0x000303d8 ldrd r4, r5, [sp, 0xe8]                       |         __asm ("ldrd r4, r5, [var_e8h]");
    0x000303dc strd r8, sb, [sp, 0x18]                       |         __asm ("strd r8, sb, [var_18h]");
    0x000303e0 eor r4, r4, r2                                |         r4 ^= r2;
    0x000303e4 eor r5, r5, r3                                |         r5 ^= r3;
    0x000303e8 mov r2, r8                                    |         r2 = r8;
    0x000303ec mov r3, sb                                    |         r3 = sb;
    0x000303f0 ldrd r8, sb, [sp, 8]                          |         __asm ("ldrd r8, sb, [var_ch]");
    0x000303f4 lsr r6, r6, 0xe                               |         r6 >>= 0xe;
    0x000303f8 and r8, r8, r2                                |         r8 &= r2;
    0x000303fc and sb, sb, r3                                |         sb &= r3;
    0x00030400 mov r2, r8                                    |         r2 = r8;
    0x00030404 mov r3, sb                                    |         r3 = sb;
    0x00030408 ldrd r8, sb, [sp]                             |         __asm ("ldrd r8, sb, [sp]");
    0x0003040c and r8, r8, r0                                |         r8 &= r0;
    0x00030410 and sb, sb, r1                                |         sb &= r1;
    0x00030414 strd r8, sb, [sp, 0x38]                       |         __asm ("strd r8, sb, [var_38h]");
    0x00030418 ldrd r8, sb, [sp, 0x10]                       |         __asm ("ldrd r8, sb, [var_10h]");
    0x0003041c orr r1, r6, sb, lsl 18                        |         r1 = r6 | (sb << 18);
    0x00030420 str r1, [sp, 0x100]                           |         var_100h = r1;
    0x00030424 orr r1, ip, sb, lsl 14                        |         r1 = ip | (sb << 14);
    0x00030428 str r1, [sp, 0x108]                           |         var_108h = r1;
    0x0003042c ldrd r0, r1, [sp, 0xf8]                       |         __asm ("ldrd r0, r1, [var_fch]");
    0x00030430 lsr r7, sb, 0xe                               |         r7 = sb >> 0xe;
    0x00030434 eor r0, r0, r4                                |         r0 ^= r4;
    0x00030438 eor r1, r1, r5                                |         r1 ^= r5;
    0x0003043c strd r0, r1, [sp, 0x10]                       |         __asm ("strd r0, r1, [var_10h]");
    0x00030440 ldrd r0, r1, [sp, 0x38]                       |         __asm ("ldrd r0, r1, [var_38h]");
    0x00030444 ldrd r4, r5, [sp, 0x28]                       |         __asm ("ldrd r4, r5, [var_28h]");
    0x00030448 orr r0, r0, r2                                |         r0 |= r2;
    0x0003044c orr r1, r1, r3                                |         r1 |= r3;
    0x00030450 ldrd r2, r3, [sp, 0x20]                       |         __asm ("ldrd r2, r3, [var_20h]");
    0x00030454 lsr r6, sb, 0x12                              |         r6 = sb >> 0x12;
    0x00030458 eor r2, r2, r4                                |         r2 ^= r4;
    0x0003045c lsl ip, sb, 0x17                              |         
    0x00030460 mov r4, r8                                    |         r4 = r8;
    0x00030464 eor r3, r3, r5                                |         r3 ^= r5;
    0x00030468 orr r7, r7, r8, lsl 18                        |         r7 |= (r8 << 18);
    0x0003046c mov r5, sb                                    |         r5 = sb;
    0x00030470 orr r6, r6, r4, lsl 14                        |         r6 |= (r4 << 14);
    0x00030474 orr ip, ip, r4, lsr 9                         |         
    0x00030478 str r7, [sp, 0x104]                           |         var_104h = r7;
    0x0003047c str r6, [sp, 0x10c]                           |         var_10ch = r6;
    0x00030480 mov r7, r5                                    |         r7 = r5;
    0x00030484 mov r6, r4                                    |         r6 = r4;
    0x00030488 str ip, [sp, 0x114]                           |         var_114h = ip;
    0x0003048c lsl ip, r4, 0x17                              |         
    0x00030490 ldrd r4, r5, [sp, 0x10]                       |         __asm ("ldrd r4, r5, [var_10h]");
    0x00030494 strd r6, r7, [sp, 0x10]                       |         __asm ("strd r6, r7, [var_10h]");
    0x00030498 adds r4, r4, r0                               |         r4 += r0;
    0x0003049c adc r5, r5, r1                                |         __asm ("adc r5, r5, r1");
    0x000304a0 mov r1, r7                                    |         r1 = r7;
    0x000304a4 and r1, r1, r3                                |         r1 &= r3;
    0x000304a8 mov r3, r1                                    |         r3 = r1;
    0x000304ac mov r0, r6                                    |         r0 = r6;
    0x000304b0 orr r1, ip, r7, lsr 9                         |         r1 = ip | (r7 >> 9);
    0x000304b4 ldrd r6, r7, [sp, 0x30]                       |         __asm ("ldrd r6, r7, [var_30h]");
    0x000304b8 and r0, r0, r2                                |         r0 &= r2;
    0x000304bc adds r6, r6, r4                               |         r6 += r4;
    0x000304c0 mov r2, r0                                    |         r2 = r0;
    0x000304c4 str r1, [sp, 0x110]                           |         var_110h = r1;
    0x000304c8 ldrd r0, r1, [lr, -0x20]                      |         __asm ("ldrd r0, r1, [lr, -0x20]");
    0x000304cc adc r7, r7, r5                                |         __asm ("adc r7, r7, r5");
    0x000304d0 mov r5, r7                                    |         r5 = r7;
    0x000304d4 mov r4, r6                                    |         r4 = r6;
    0x000304d8 ldrd r6, r7, [sp, 0x20]                       |         __asm ("ldrd r6, r7, [var_20h]");
    0x000304dc adds r0, r0, sl                               |         r0 += sl;
    0x000304e0 adc r1, r1, fp                                |         __asm ("adc r1, r1, fp");
    0x000304e4 mov r8, r0                                    |         r8 = r0;
    0x000304e8 mov sb, r1                                    |         sb = r1;
    0x000304ec eor r6, r6, r2                                |         r6 ^= r2;
    0x000304f0 add ip, sp, 0x108                             |         
    0x000304f4 add r1, sp, 0x100                             |         r1 += var_100h;
    0x000304f8 ldrd sl, fp, [ip]                             |         __asm ("ldrd sl, fp, [ip]");
    0x000304fc adds r6, r6, r8                               |         r6 += r8;
    0x00030500 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x00030504 eor r7, r7, r3                                |         r7 ^= r3;
    0x00030508 add r3, sp, 0x110                             |         r3 += var_110h;
    0x0003050c adc r7, r7, sb                                |         __asm ("adc r7, r7, sb");
    0x00030510 ldrd r8, sb, [r3]                             |         __asm ("ldrd r8, sb, [r3]");
    0x00030514 eor r1, r1, fp                                |         r1 ^= fp;
    0x00030518 eor r0, r0, sl                                |         r0 ^= sl;
    0x0003051c eor sb, sb, r1                                |         sb ^= r1;
    0x00030520 mov sl, r4                                    |         sl = r4;
    0x00030524 lsr r4, r4, 0x1c                              |         r4 >>= 0x1c;
    0x00030528 mov fp, r5                                    |         
    0x0003052c orr r3, r4, r5, lsl 4                         |         r3 = r4 | (r5 << 4);
    0x00030530 lsl ip, r5, 0x1e                              |         
    0x00030534 mov r1, sb                                    |         r1 = sb;
    0x00030538 eor r8, r8, r0                                |         r8 ^= r0;
    0x0003053c mov sb, r5                                    |         sb = r5;
    0x00030540 lsr r5, r5, 0x1c                              |         r5 >>= 0x1c;
    0x00030544 mov r0, r8                                    |         r0 = r8;
    0x00030548 lsl r4, sl, 0x1e                              |         r4 = sl << 0x1e;
    0x0003054c orr r5, r5, sl, lsl 4                         |         r5 |= (sl << 4);
    0x00030550 adds r2, r6, r0                               |         r2 = r6 + r0;
    0x00030554 str r5, [sp, 0x11c]                           |         var_11ch = r5;
    0x00030558 add r0, sp, 0x1e0                             |         r0 += var_1e0h;
    0x0003055c orr r5, r4, fp, lsr 2                         |         r5 = r4 | (fp >> 2);
    0x00030560 str r5, [sp, 0x120]                           |         var_120h = r5;
    0x00030564 ldrd r4, r5, [r0]                             |         __asm ("ldrd r4, r5, [r0]");
    0x00030568 str r3, [sp, 0x118]                           |         var_118h = r3;
    0x0003056c orr r3, ip, sl, lsr 2                         |         r3 = ip | (sl >> 2);
    0x00030570 str r3, [sp, 0x124]                           |         var_124h = r3;
    0x00030574 adc r3, r7, r1                                |         __asm ("adc r3, r7, r1");
    0x00030578 adds r4, r4, r2                               |         r4 += r2;
    0x0003057c lsl r1, sl, 0x19                              |         r1 = sl << 0x19;
    0x00030580 adc r5, r5, r3                                |         __asm ("adc r5, r5, r3");
    0x00030584 orr r3, r1, sb, lsr 7                         |         r3 = r1 | (sb >> 7);
    0x00030588 str r3, [sp, 0x128]                           |         var_128h = r3;
    0x0003058c add r3, sp, 0x118                             |         r3 += var_118h;
    0x00030590 ldrd r0, r1, [r3]                             |         __asm ("ldrd r0, r1, [r3]");
    0x00030594 add r3, sp, 0x120                             |         r3 += var_120h;
    0x00030598 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x0003059c lsl ip, fp, 0x19                              |         
    0x000305a0 mov r8, sl                                    |         r8 = sl;
    0x000305a4 orr ip, ip, sl, lsr 7                         |         
    0x000305a8 ldrd sl, fp, [sp, 0x18]                       |         __asm ("ldrd sl, fp, [var_18h]");
    0x000305ac eor r0, r0, r2                                |         r0 ^= r2;
    0x000305b0 eor r1, r1, r3                                |         r1 ^= r3;
    0x000305b4 mov r6, r4                                    |         r6 = r4;
    0x000305b8 mov r7, r5                                    |         r7 = r5;
    0x000305bc orr r4, sl, r8                                |         r4 = sl | r8;
    0x000305c0 orr r5, fp, sb                                |         r5 = fp | sb;
    0x000305c4 mov r2, r0                                    |         r2 = r0;
    0x000305c8 mov r3, r1                                    |         r3 = r1;
    0x000305cc mov r0, sl                                    |         r0 = sl;
    0x000305d0 mov r1, fp                                    |         r1 = fp;
    0x000305d4 strd r4, r5, [sp, 0x38]                       |         __asm ("strd r4, r5, [var_38h]");
    0x000305d8 and r0, r0, r8                                |         r0 &= r8;
    0x000305dc and r1, r1, sb                                |         r1 &= sb;
    0x000305e0 ldrd r4, r5, [sp]                             |         __asm ("ldrd r4, r5, [sp]");
    0x000305e4 ldrd sl, fp, [sp, 8]                          |         __asm ("ldrd sl, fp, [var_ch]");
    0x000305e8 strd r0, r1, [sp]                             |         __asm ("strd r0, r1, [sp]");
    0x000305ec ldrd r0, r1, [sp, 0x38]                       |         __asm ("ldrd r0, r1, [var_38h]");
    0x000305f0 strd r8, sb, [sp, 0x30]                       |         __asm ("strd r8, sb, [var_30h]");
    0x000305f4 and r1, r1, fp                                |         r1 &= fp;
    0x000305f8 and r0, r0, sl                                |         r0 &= sl;
    0x000305fc mov sb, r1                                    |         sb = r1;
    0x00030600 add r1, sp, 0x128                             |         r1 += var_128h;
    0x00030604 str ip, [sp, 0x12c]                           |         var_12ch = ip;
    0x00030608 mov r8, r0                                    |         r8 = r0;
    0x0003060c ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x00030610 adds r4, r4, r6                               |         r4 += r6;
    0x00030614 eor r0, r0, r2                                |         r0 ^= r2;
    0x00030618 eor r1, r1, r3                                |         r1 ^= r3;
    0x0003061c mov r2, r0                                    |         r2 = r0;
    0x00030620 mov r3, r1                                    |         r3 = r1;
    0x00030624 ldrd r0, r1, [sp]                             |         __asm ("ldrd r0, r1, [sp]");
    0x00030628 adc r5, r5, r7                                |         __asm ("adc r5, r5, r7");
    0x0003062c orr r0, r0, r8                                |         r0 |= r8;
    0x00030630 lsr ip, r4, 0xe                               |         
    0x00030634 orr r1, r1, sb                                |         r1 |= sb;
    0x00030638 mov r8, r0                                    |         r8 = r0;
    0x0003063c adds r8, r8, r2                               |         r8 += r2;
    0x00030640 mov sl, r4                                    |         sl = r4;
    0x00030644 mov sb, r1                                    |         sb = r1;
    0x00030648 lsr r4, r4, 0x12                              |         r4 >>= 0x12;
    0x0003064c orr r1, ip, r5, lsl 18                        |         r1 = ip | (r5 << 18);
    0x00030650 adc sb, sb, r3                                |         __asm ("adc sb, sb, r3");
    0x00030654 str r1, [sp, 0x130]                           |         var_130h = r1;
    0x00030658 ldrd r2, r3, [sp, 0x10]                       |         __asm ("ldrd r2, r3, [var_10h]");
    0x0003065c orr r1, r4, r5, lsl 14                        |         r1 = r4 | (r5 << 14);
    0x00030660 mov r4, sl                                    |         r4 = sl;
    0x00030664 ldrd sl, fp, [sp, 0x28]                       |         __asm ("ldrd sl, fp, [var_28h]");
    0x00030668 lsr r0, r5, 0x12                              |         r0 = r5 >> 0x12;
    0x0003066c eor r2, r2, sl                                |         r2 ^= sl;
    0x00030670 eor r3, r3, fp                                |         r3 ^= fp;
    0x00030674 strd r2, r3, [sp, 0x28]                       |         __asm ("strd r2, r3, [var_28h]");
    0x00030678 str r1, [sp, 0x138]                           |         var_138h = r1;
    0x0003067c orr r3, r0, r4, lsl 14                        |         r3 = r0 | (r4 << 14);
    0x00030680 lsl r1, r5, 0x17                              |         r1 = r5 << 0x17;
    0x00030684 adds r2, r8, r6                               |         r2 = r8 + r6;
    0x00030688 lsr ip, r5, 0xe                               |         
    0x0003068c str r3, [sp, 0x13c]                           |         var_13ch = r3;
    0x00030690 orr r3, r1, r4, lsr 9                         |         r3 = r1 | (r4 >> 9);
    0x00030694 lsl r1, r4, 0x17                              |         r1 = r4 << 0x17;
    0x00030698 orr ip, ip, r4, lsl 18                        |         
    0x0003069c orr r1, r1, r5, lsr 9                         |         r1 |= (r5 >> 9);
    0x000306a0 str r3, [sp, 0x144]                           |         var_144h = r3;
    0x000306a4 adc r3, sb, r7                                |         __asm ("adc r3, sb, r7");
    0x000306a8 ldrd r8, sb, [sp, 0x28]                       |         __asm ("ldrd r8, sb, [var_28h]");
    0x000306ac strd r2, r3, [sp]                             |         __asm ("strd r2, r3, [sp]");
    0x000306b0 str ip, [sp, 0x134]                           |         var_134h = ip;
    0x000306b4 str r1, [sp, 0x140]                           |         var_140h = r1;
    0x000306b8 ldrd r0, r1, [sp]                             |         __asm ("ldrd r0, r1, [sp]");
    0x000306bc and r8, r8, r4                                |         r8 &= r4;
    0x000306c0 ldrd r6, r7, [sp, 0x20]                       |         __asm ("ldrd r6, r7, [var_20h]");
    0x000306c4 mov r2, r8                                    |         r2 = r8;
    0x000306c8 lsl ip, r1, 0x1e                              |         
    0x000306cc mov r8, r4                                    |         r8 = r4;
    0x000306d0 lsr r4, r0, 0x1c                              |         r4 = r0 >> 0x1c;
    0x000306d4 ldrd r0, r1, [lr, -0x18]                      |         __asm ("ldrd r0, r1, [lr, -0x18]");
    0x000306d8 and sb, sb, r5                                |         sb &= r5;
    0x000306dc adds r0, r0, r6                               |         r0 += r6;
    0x000306e0 adc r1, r1, r7                                |         __asm ("adc r1, r1, r7");
    0x000306e4 mov r3, sb                                    |         r3 = sb;
    0x000306e8 mov r7, r1                                    |         r7 = r1;
    0x000306ec mov r1, fp                                    |         r1 = fp;
    0x000306f0 mov r6, r0                                    |         r6 = r0;
    0x000306f4 eor r1, r1, r3                                |         r1 ^= r3;
    0x000306f8 mov r0, sl                                    |         r0 = sl;
    0x000306fc mov sb, r5                                    |         sb = r5;
    0x00030700 mov r3, r1                                    |         r3 = r1;
    0x00030704 eor r0, r0, r2                                |         r0 ^= r2;
    0x00030708 add r5, sp, 0x138                             |         r5 += var_138h;
    0x0003070c add r1, sp, 0x130                             |         r1 += var_130h;
    0x00030710 mov r2, r0                                    |         r2 = r0;
    0x00030714 strd sl, fp, [sp, 0x28]                       |         __asm ("strd sl, fp, [var_0hx28]");
    0x00030718 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x0003071c ldrd sl, fp, [r5]                             |         __asm ("ldrd sl, fp, [r5]");
    0x00030720 strd r8, sb, [sp, 0x38]                       |         __asm ("strd r8, sb, [var_38h]");
    0x00030724 eor r0, r0, sl                                |         r0 ^= sl;
    0x00030728 eor r1, r1, fp                                |         r1 ^= fp;
    0x0003072c ldrd sl, fp, [sp]                             |         __asm ("ldrd sl, fp, [sp]");
    0x00030730 orr r5, r4, fp, lsl 4                         |         r5 = r4 | (fp << 4);
    0x00030734 orr ip, ip, sl, lsr 2                         |         
    0x00030738 lsl r4, sl, 0x1e                              |         r4 = sl << 0x1e;
    0x0003073c adds sl, r2, r6                               |         sl = r2 + r6;
    0x00030740 str r5, [sp, 0x148]                           |         var_148h = r5;
    0x00030744 str ip, [sp, 0x154]                           |         var_154h = ip;
    0x00030748 lsr r5, fp, 0x1c                              |         r5 = fp >> 0x1c;
    0x0003074c lsl ip, fp, 0x19                              |         
    0x00030750 adc fp, r3, r7                                |         __asm ("adc fp, r3, r7");
    0x00030754 add r3, sp, 0x140                             |         r3 += var_140h;
    0x00030758 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x0003075c ldrd r6, r7, [sp]                             |         __asm ("ldrd r6, r7, [sp]");
    0x00030760 eor r3, r3, r1                                |         r3 ^= r1;
    0x00030764 mov r1, r3                                    |         r1 = r3;
    0x00030768 orr r3, r5, r6, lsl 4                         |         r3 = r5 | (r6 << 4);
    0x0003076c str r3, [sp, 0x14c]                           |         var_14ch = r3;
    0x00030770 orr r3, r4, r7, lsr 2                         |         r3 = r4 | (r7 >> 2);
    0x00030774 ldrd r4, r5, [sp, 0x30]                       |         __asm ("ldrd r4, r5, [var_30h]");
    0x00030778 eor r2, r2, r0                                |         r2 ^= r0;
    0x0003077c adds r2, sl, r2                               |         r2 = sl + r2;
    0x00030780 str r3, [sp, 0x150]                           |         var_150h = r3;
    0x00030784 orr r3, ip, r6, lsr 7                         |         r3 = ip | (r6 >> 7);
    0x00030788 str r3, [sp, 0x15c]                           |         var_15ch = r3;
    0x0003078c lsl ip, r6, 0x19                              |         
    0x00030790 adc r3, fp, r1                                |         __asm ("adc r3, fp, r1");
    0x00030794 orr r1, r7, r5                                |         r1 = r7 | r5;
    0x00030798 mov fp, r1                                    |         
    0x0003079c orr r1, ip, r7, lsr 7                         |         r1 = ip | (r7 >> 7);
    0x000307a0 str r1, [sp, 0x158]                           |         var_158h = r1;
    0x000307a4 add r1, sp, 0x1e8                             |         r1 += var_1e8h;
    0x000307a8 orr r0, r6, r4                                |         r0 = r6 | r4;
    0x000307ac ldrd r6, r7, [r1]                             |         __asm ("ldrd r6, r7, [r1]");
    0x000307b0 add r1, sp, 0x150                             |         r1 += var_150h;
    0x000307b4 adds r6, r6, r2                               |         r6 += r2;
    0x000307b8 adc r7, r7, r3                                |         __asm ("adc r7, r7, r3");
    0x000307bc add r3, sp, 0x148                             |         r3 += var_148h;
    0x000307c0 mov sl, r0                                    |         sl = r0;
    0x000307c4 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x000307c8 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x000307cc eor r2, r2, r0                                |         r2 ^= r0;
    0x000307d0 eor r3, r3, r1                                |         r3 ^= r1;
    0x000307d4 mov r0, r2                                    |         r0 = r2;
    0x000307d8 mov r1, r3                                    |         r1 = r3;
    0x000307dc ldrd r2, r3, [sp]                             |         __asm ("ldrd r2, r3, [sp]");
    0x000307e0 and r2, r2, r4                                |         r2 &= r4;
    0x000307e4 and r3, r3, r5                                |         r3 &= r5;
    0x000307e8 mov r4, r2                                    |         r4 = r2;
    0x000307ec mov r5, r3                                    |         r5 = r3;
    0x000307f0 ldrd r2, r3, [sp, 0x18]                       |         __asm ("ldrd r2, r3, [var_18h]");
    0x000307f4 and r2, r2, sl                                |         r2 &= sl;
    0x000307f8 and r3, r3, fp                                |         r3 &= fp;
    0x000307fc strd r2, r3, [sp, 0x20]                       |         __asm ("strd r2, r3, [var_20h]");
    0x00030800 add r3, sp, 0x158                             |         r3 += var_158h;
    0x00030804 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x00030808 ldrd sl, fp, [sp, 8]                          |         __asm ("ldrd sl, fp, [var_ch]");
    0x0003080c eor r2, r2, r0                                |         r2 ^= r0;
    0x00030810 eor r3, r3, r1                                |         r3 ^= r1;
    0x00030814 mov r0, r2                                    |         r0 = r2;
    0x00030818 mov r1, r3                                    |         r1 = r3;
    0x0003081c ldrd r2, r3, [sp, 0x20]                       |         __asm ("ldrd r2, r3, [var_20h]");
    0x00030820 adds sl, sl, r6                               |         sl += r6;
    0x00030824 orr r2, r2, r4                                |         r2 |= r4;
    0x00030828 adc fp, fp, r7                                |         __asm ("adc fp, fp, r7");
    0x0003082c orr r3, r3, r5                                |         r3 |= r5;
    0x00030830 adds r0, r0, r2                               |         r0 += r2;
    0x00030834 lsr ip, sl, 0xe                               |         
    0x00030838 adc r1, r1, r3                                |         __asm ("adc r1, r1, r3");
    0x0003083c lsr r4, sl, 0x12                              |         r4 = sl >> 0x12;
    0x00030840 orr r3, ip, fp, lsl 18                        |         r3 = ip | (fp << 18);
    0x00030844 str r3, [sp, 0x160]                           |         var_160h = r3;
    0x00030848 lsr ip, fp, 0xe                               |         
    0x0003084c orr r3, r4, fp, lsl 14                        |         r3 = r4 | (fp << 14);
    0x00030850 adds r4, r0, r6                               |         r4 = r0 + r6;
    0x00030854 adc r5, r1, r7                                |         __asm ("adc r5, r1, r7");
    0x00030858 lsr r2, fp, 0x12                              |         r2 = fp >> 0x12;
    0x0003085c orr r1, ip, sl, lsl 18                        |         r1 = ip | (sl << 18);
    0x00030860 str r3, [sp, 0x168]                           |         var_168h = r3;
    0x00030864 str r1, [sp, 0x164]                           |         var_164h = r1;
    0x00030868 lsl r3, fp, 0x17                              |         r3 = fp << 0x17;
    0x0003086c orr r1, r2, sl, lsl 14                        |         r1 = r2 | (sl << 14);
    0x00030870 str r1, [sp, 0x16c]                           |         var_16ch = r1;
    0x00030874 orr r3, r3, sl, lsr 9                         |         r3 |= (sl >> 9);
    0x00030878 lsl r1, sl, 0x17                              |         r1 = sl << 0x17;
    0x0003087c lsr r2, r4, 0x1c                              |         r2 = r4 >> 0x1c;
    0x00030880 str r3, [sp, 0x174]                           |         var_174h = r3;
    0x00030884 orr r1, r1, fp, lsr 9                         |         r1 |= (fp >> 9);
    0x00030888 lsl r3, r5, 0x1e                              |         r3 = r5 << 0x1e;
    0x0003088c ldrd r6, r7, [sp, 0x10]                       |         __asm ("ldrd r6, r7, [var_10h]");
    0x00030890 orr r3, r3, r4, lsr 2                         |         r3 |= (r4 >> 2);
    0x00030894 str r1, [sp, 0x170]                           |         var_170h = r1;
    0x00030898 orr r1, r2, r5, lsl 4                         |         r1 = r2 | (r5 << 4);
    0x0003089c str r1, [sp, 0x178]                           |         var_178h = r1;
    0x000308a0 str r3, [sp, 0x184]                           |         var_184h = r3;
    0x000308a4 ldrd r0, r1, [sp, 0x28]                       |         __asm ("ldrd r0, r1, [var_28h]");
    0x000308a8 ldrd r2, r3, [lr, -0x10]                      |         __asm ("ldrd r2, r3, [lr, -0x10]");
    0x000308ac eor r7, r7, sb                                |         r7 ^= sb;
    0x000308b0 adds r2, r2, r0                               |         r2 += r0;
    0x000308b4 adc r3, r3, r1                                |         __asm ("adc r3, r3, r1");
    0x000308b8 strd r2, r3, [sp, 8]                          |         __asm ("strd r2, r3, [var_ch]");
    0x000308bc ldrd r2, r3, [sp, 0x10]                       |         __asm ("ldrd r2, r3, [var_10h]");
    0x000308c0 eor r6, r6, r8                                |         r6 ^= r8;
    0x000308c4 and r7, r7, fp                                |         r7 &= fp;
    0x000308c8 and r6, r6, sl                                |         r6 &= sl;
    0x000308cc eor r3, r3, r7                                |         r3 ^= r7;
    0x000308d0 mov r7, r3                                    |         r7 = r3;
    0x000308d4 eor r2, r2, r6                                |         r2 ^= r6;
    0x000308d8 add r3, sp, 0x160                             |         r3 += var_160h;
    0x000308dc add r1, sp, 0x168                             |         r1 += var_168h;
    0x000308e0 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x000308e4 mov r6, r2                                    |         r6 = r2;
    0x000308e8 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x000308ec mov r8, r4                                    |         r8 = r4;
    0x000308f0 mov sb, r5                                    |         sb = r5;
    0x000308f4 lsr r5, r5, 0x1c                              |         r5 >>= 0x1c;
    0x000308f8 eor r3, r3, r1                                |         r3 ^= r1;
    0x000308fc lsl r4, r4, 0x1e                              |         r4 <<= 0x1e;
    0x00030900 orr r1, r5, r8, lsl 4                         |         r1 = r5 | (r8 << 4);
    0x00030904 lsl ip, sb, 0x19                              |         
    0x00030908 str r1, [sp, 0x17c]                           |         var_17ch = r1;
    0x0003090c orr r1, r4, sb, lsr 2                         |         r1 = r4 | (sb >> 2);
    0x00030910 str r1, [sp, 0x180]                           |         var_180h = r1;
    0x00030914 orr r1, ip, r8, lsr 7                         |         r1 = ip | (r8 >> 7);
    0x00030918 eor r2, r2, r0                                |         r2 ^= r0;
    0x0003091c str r1, [sp, 0x18c]                           |         var_18ch = r1;
    0x00030920 ldrd r0, r1, [sp, 8]                          |         __asm ("ldrd r0, r1, [var_ch]");
    0x00030924 lsl ip, r8, 0x19                              |         
    0x00030928 adds r0, r0, r6                               |         r0 += r6;
    0x0003092c adc r1, r1, r7                                |         __asm ("adc r1, r1, r7");
    0x00030930 strd r0, r1, [sp, 8]                          |         __asm ("strd r0, r1, [var_ch]");
    0x00030934 add r1, sp, 0x170                             |         r1 += var_170h;
    0x00030938 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x0003093c ldrd r6, r7, [sp]                             |         __asm ("ldrd r6, r7, [sp]");
    0x00030940 eor r0, r0, r2                                |         r0 ^= r2;
    0x00030944 orr r6, r6, r8                                |         r6 |= r8;
    0x00030948 orr r7, r7, sb                                |         r7 |= sb;
    0x0003094c eor r1, r1, r3                                |         r1 ^= r3;
    0x00030950 mov r2, r0                                    |         r2 = r0;
    0x00030954 mov r3, r1                                    |         r3 = r1;
    0x00030958 mov r0, r6                                    |         r0 = r6;
    0x0003095c mov r1, r7                                    |         r1 = r7;
    0x00030960 ldrd r6, r7, [sp, 8]                          |         __asm ("ldrd r6, r7, [var_ch]");
    0x00030964 orr ip, ip, sb, lsr 7                         |         
    0x00030968 adds r6, r6, r2                               |         r6 += r2;
    0x0003096c adc r7, r7, r3                                |         __asm ("adc r7, r7, r3");
    0x00030970 str ip, [sp, 0x188]                           |         var_188h = ip;
    0x00030974 add r3, sp, 0x178                             |         r3 += var_178h;
    0x00030978 add ip, sp, 0x180                             |         
    0x0003097c ldrd r4, r5, [ip]                             |         __asm ("ldrd r4, r5, [ip]");
    0x00030980 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x00030984 strd r8, sb, [sp, 0x20]                       |         __asm ("strd r8, sb, [var_20h]");
    0x00030988 eor r2, r2, r4                                |         r2 ^= r4;
    0x0003098c eor r3, r3, r5                                |         r3 ^= r5;
    0x00030990 mov r4, r8                                    |         r4 = r8;
    0x00030994 mov r5, sb                                    |         r5 = sb;
    0x00030998 ldrd r8, sb, [sp]                             |         __asm ("ldrd r8, sb, [sp]");
    0x0003099c and r8, r8, r4                                |         r8 &= r4;
    0x000309a0 and sb, sb, r5                                |         sb &= r5;
    0x000309a4 mov r4, r8                                    |         r4 = r8;
    0x000309a8 mov r5, sb                                    |         r5 = sb;
    0x000309ac ldrd r8, sb, [sp, 0x30]                       |         __asm ("ldrd r8, sb, [var_30h]");
    0x000309b0 and sb, sb, r1                                |         sb &= r1;
    0x000309b4 add r1, sp, 0x1f0                             |         r1 += var_1f0h;
    0x000309b8 and r8, r8, r0                                |         r8 &= r0;
    0x000309bc ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x000309c0 strd r8, sb, [sp, 8]                          |         __asm ("strd r8, sb, [var_ch]");
    0x000309c4 adds r0, r0, r6                               |         r0 += r6;
    0x000309c8 adc r1, r1, r7                                |         __asm ("adc r1, r1, r7");
    0x000309cc mov r7, r1                                    |         r7 = r1;
    0x000309d0 add r1, sp, 0x188                             |         r1 += var_188h;
    0x000309d4 mov r6, r0                                    |         r6 = r0;
    0x000309d8 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x000309dc eor r0, r0, r2                                |         r0 ^= r2;
    0x000309e0 eor r1, r1, r3                                |         r1 ^= r3;
    0x000309e4 mov r8, r0                                    |         r8 = r0;
    0x000309e8 mov sb, r1                                    |         sb = r1;
    0x000309ec ldrd r0, r1, [sp, 8]                          |         __asm ("ldrd r0, r1, [var_ch]");
    0x000309f0 orr r0, r0, r4                                |         r0 |= r4;
    0x000309f4 orr r1, r1, r5                                |         r1 |= r5;
    0x000309f8 ldrd r4, r5, [sp, 0x18]                       |         __asm ("ldrd r4, r5, [var_18h]");
    0x000309fc adds r4, r4, r6                               |         r4 += r6;
    0x00030a00 adc r5, r5, r7                                |         __asm ("adc r5, r5, r7");
    0x00030a04 adds r2, r8, r0                               |         r2 = r8 + r0;
    0x00030a08 adc r3, sb, r1                                |         __asm ("adc r3, sb, r1");
    0x00030a0c adds r8, r2, r6                               |         r8 = r2 + r6;
    0x00030a10 adc sb, r3, r7                                |         __asm ("adc sb, r3, r7");
    0x00030a14 ldrd r2, r3, [lr, -8]                         |         __asm ("ldrd r2, r3, [lr, -8]");
    0x00030a18 mov ip, r5                                    |         
    0x00030a1c lsr r0, r4, 0xe                               |         r0 = r4 >> 0xe;
    0x00030a20 lsr r1, r4, 0x12                              |         r1 = r4 >> 0x12;
    0x00030a24 mov r7, sb                                    |         r7 = sb;
    0x00030a28 mov r6, r8                                    |         r6 = r8;
    0x00030a2c orr r0, r0, r5, lsl 18                        |         r0 |= (r5 << 18);
    0x00030a30 mov r8, r4                                    |         r8 = r4;
    0x00030a34 mov sb, r5                                    |         sb = r5;
    0x00030a38 orr r1, r1, ip, lsl 14                        |         r1 |= (ip << 14);
    0x00030a3c lsr r5, r5, 0xe                               |         r5 >>= 0xe;
    0x00030a40 strd r2, r3, [sp, 0x18]                       |         __asm ("strd r2, r3, [var_18h]");
    0x00030a44 orr r5, r5, r8, lsl 18                        |         r5 |= (r8 << 18);
    0x00030a48 str r0, [sp, 0x190]                           |         var_190h = r0;
    0x00030a4c str r1, [sp, 0x198]                           |         var_198h = r1;
    0x00030a50 ldrd r0, r1, [sp, 0x38]                       |         __asm ("ldrd r0, r1, [var_38h]");
    0x00030a54 strd r8, sb, [sp, 8]                          |         __asm ("strd r8, sb, [var_ch]");
    0x00030a58 ldrd r8, sb, [sp, 8]                          |         __asm ("ldrd r8, sb, [var_ch]");
    0x00030a5c lsr r4, ip, 0x12                              |         r4 = ip >> 0x12;
    0x00030a60 lsl ip, ip, 0x17                              |         
    0x00030a64 lsr r2, r6, 0x1c                              |         r2 = r6 >> 0x1c;
    0x00030a68 orr ip, ip, r8, lsr 9                         |         
    0x00030a6c lsl r3, r7, 0x1e                              |         r3 = r7 << 0x1e;
    0x00030a70 str ip, [sp, 0x1a4]                           |         var_1a4h = ip;
    0x00030a74 orr r3, r3, r6, lsr 2                         |         r3 |= (r6 >> 2);
    0x00030a78 orr ip, r2, r7, lsl 4                         |         
    0x00030a7c mov sb, r7                                    |         sb = r7;
    0x00030a80 str r5, [sp, 0x194]                           |         var_194h = r5;
    0x00030a84 str ip, [sp, 0x1a8]                           |         var_1a8h = ip;
    0x00030a88 orr r5, r4, r8, lsl 14                        |         r5 = r4 | (r8 << 14);
    0x00030a8c str r3, [sp, 0x1b4]                           |         var_1b4h = r3;
    0x00030a90 lsl r2, r6, 0x1e                              |         r2 = r6 << 0x1e;
    0x00030a94 mov r4, r8                                    |         r4 = r8;
    0x00030a98 lsr ip, r7, 0x1c                              |         
    0x00030a9c mov r8, r6                                    |         r8 = r6;
    0x00030aa0 lsl r3, r7, 0x19                              |         r3 = r7 << 0x19;
    0x00030aa4 ldrd r6, r7, [sp, 8]                          |         __asm ("ldrd r6, r7, [var_ch]");
    0x00030aa8 eor r0, r0, sl                                |         r0 ^= sl;
    0x00030aac eor r1, r1, fp                                |         r1 ^= fp;
    0x00030ab0 str r5, [sp, 0x19c]                           |         var_19ch = r5;
    0x00030ab4 orr ip, ip, r8, lsl 4                         |         
    0x00030ab8 orr r3, r3, r8, lsr 7                         |         r3 |= (r8 >> 7);
    0x00030abc and r6, r6, r0                                |         r6 &= r0;
    0x00030ac0 and r7, r7, r1                                |         r7 &= r1;
    0x00030ac4 ldr r5, [sp, 0xc]                             |         r5 = var_ch;
    0x00030ac8 mov r0, r6                                    |         r0 = r6;
    0x00030acc mov r1, r7                                    |         r1 = r7;
    0x00030ad0 str ip, [sp, 0x1ac]                           |         var_1ach = ip;
    0x00030ad4 ldrd r6, r7, [sp, 0x10]                       |         __asm ("ldrd r6, r7, [var_10h]");
    0x00030ad8 orr ip, r2, sb, lsr 2                         |         
    0x00030adc str r3, [sp, 0x1bc]                           |         var_1bch = r3;
    0x00030ae0 ldrd r2, r3, [sp, 0x18]                       |         __asm ("ldrd r2, r3, [var_18h]");
    0x00030ae4 lsl r4, r4, 0x17                              |         r4 <<= 0x17;
    0x00030ae8 orr r5, r4, r5, lsr 9                         |         r5 = r4 | (r5 >> 9);
    0x00030aec adds r2, r2, r6                               |         r2 += r6;
    0x00030af0 str r5, [sp, 0x1a0]                           |         var_1a0h = r5;
    0x00030af4 mov r4, r8                                    |         r4 = r8;
    0x00030af8 mov r5, sb                                    |         r5 = sb;
    0x00030afc str ip, [sp, 0x1b0]                           |         var_1b0h = ip;
    0x00030b00 lsl ip, r8, 0x19                              |         
    0x00030b04 ldrd r8, sb, [sp, 0x38]                       |         __asm ("ldrd r8, sb, [var_38h]");
    0x00030b08 adc r3, r3, r7                                |         __asm ("adc r3, r3, r7");
    0x00030b0c mov r7, r3                                    |         r7 = r3;
    0x00030b10 add r3, sp, 0x190                             |         r3 += var_190h;
    0x00030b14 eor r8, r8, r0                                |         r8 ^= r0;
    0x00030b18 eor sb, sb, r1                                |         sb ^= r1;
    0x00030b1c ldrd r0, r1, [r3]                             |         __asm ("ldrd r0, r1, [r3]");
    0x00030b20 add r3, sp, 0x198                             |         r3 += var_198h;
    0x00030b24 mov r6, r2                                    |         r6 = r2;
    0x00030b28 ldrd r2, r3, [r3]                             |         __asm ("ldrd r2, r3, [r3]");
    0x00030b2c strd r4, r5, [sp, 0x28]                       |         __asm ("strd r4, r5, [var_28h]");
    0x00030b30 strd r8, sb, [sp, 0x10]                       |         __asm ("strd r8, sb, [var_10h]");
    0x00030b34 eor r0, r0, r2                                |         r0 ^= r2;
    0x00030b38 ldrd r8, sb, [sp, 0x28]                       |         __asm ("ldrd r8, sb, [var_28h]");
    0x00030b3c eor r1, r1, r3                                |         r1 ^= r3;
    0x00030b40 ldrd r2, r3, [sp, 0x20]                       |         __asm ("ldrd r2, r3, [var_20h]");
    0x00030b44 mov r4, r0                                    |         r4 = r0;
    0x00030b48 mov r5, r1                                    |         r5 = r1;
    0x00030b4c orr r0, r2, r8                                |         r0 = r2 | r8;
    0x00030b50 orr r1, r3, sb                                |         r1 = r3 | sb;
    0x00030b54 strd r0, r1, [sp, 0x18]                       |         __asm ("strd r0, r1, [var_18h]");
    0x00030b58 orr r1, ip, sb, lsr 7                         |         r1 = ip | (sb >> 7);
    0x00030b5c str r1, [sp, 0x1b8]                           |         var_1b8h = r1;
    0x00030b60 ldrd r0, r1, [sp, 0x10]                       |         __asm ("ldrd r0, r1, [var_10h]");
    0x00030b64 add ip, sp, 0x1a0                             |         
    0x00030b68 adds r0, r0, r6                               |         r0 += r6;
    0x00030b6c adc r1, r1, r7                                |         __asm ("adc r1, r1, r7");
    0x00030b70 ldrd r6, r7, [ip]                             |         __asm ("ldrd r6, r7, [ip]");
    0x00030b74 add ip, sp, 0x1a8                             |         
    0x00030b78 eor r6, r6, r4                                |         r6 ^= r4;
    0x00030b7c eor r7, r7, r5                                |         r7 ^= r5;
    0x00030b80 strd r6, r7, [sp, 0x10]                       |         __asm ("strd r6, r7, [var_10h]");
    0x00030b84 ldrd r6, r7, [ip]                             |         __asm ("ldrd r6, r7, [ip]");
    0x00030b88 add ip, sp, 0x1b0                             |         
    0x00030b8c ldrd r4, r5, [ip]                             |         __asm ("ldrd r4, r5, [ip]");
    0x00030b90 and r2, r2, r8                                |         r2 &= r8;
    0x00030b94 and r3, r3, sb                                |         r3 &= sb;
    0x00030b98 eor r6, r6, r4                                |         r6 ^= r4;
    0x00030b9c eor r7, r7, r5                                |         r7 ^= r5;
    0x00030ba0 mov r8, r2                                    |         r8 = r2;
    0x00030ba4 ldrd r4, r5, [sp]                             |         __asm ("ldrd r4, r5, [sp]");
    0x00030ba8 mov sb, r3                                    |         sb = r3;
    0x00030bac ldrd r2, r3, [sp, 0x18]                       |         __asm ("ldrd r2, r3, [var_18h]");
    0x00030bb0 and r2, r2, r4                                |         r2 &= r4;
    0x00030bb4 and r3, r3, r5                                |         r3 &= r5;
    0x00030bb8 ldrd r4, r5, [sp, 0x10]                       |         __asm ("ldrd r4, r5, [var_10h]");
    0x00030bbc adds r4, r4, r0                               |         r4 += r0;
    0x00030bc0 adc r5, r5, r1                                |         __asm ("adc r5, r5, r1");
    0x00030bc4 add r1, sp, 0x1b8                             |         r1 += var_1b8h;
    0x00030bc8 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x00030bcc eor r1, r1, r7                                |         r1 ^= r7;
    0x00030bd0 eor r0, r0, r6                                |         r0 ^= r6;
    0x00030bd4 mov r7, r1                                    |         r7 = r1;
    0x00030bd8 orr r1, sb, r3                                |         r1 = sb | r3;
    0x00030bdc mov r3, r1                                    |         r3 = r1;
    0x00030be0 mov r6, r0                                    |         r6 = r0;
    0x00030be4 add r1, sp, 0x1f8                             |         r1 += var_1f8h;
    0x00030be8 orr r0, r8, r2                                |         r0 = r8 | r2;
    0x00030bec mov r2, r0                                    |         r2 = r0;
    0x00030bf0 ldrd r0, r1, [r1]                             |         __asm ("ldrd r0, r1, [r1]");
    0x00030bf4 ldrd r8, sb, [sp, 0x30]                       |         __asm ("ldrd r8, sb, [var_30h]");
    0x00030bf8 adds r0, r0, r4                               |         r0 += r4;
    0x00030bfc adc r1, r1, r5                                |         __asm ("adc r1, r1, r5");
    0x00030c00 adds r6, r6, r2                               |         r6 += r2;
    0x00030c04 adc r7, r7, r3                                |         __asm ("adc r7, r7, r3");
    0x00030c08 adds r8, r8, r0                               |         r8 += r0;
    0x00030c0c adc sb, sb, r1                                |         __asm ("adc sb, sb, r1");
    0x00030c10 adds r2, r6, r0                               |         r2 = r6 + r0;
    0x00030c14 adc r3, r7, r1                                |         __asm ("adc r3, r7, r1");
    0x00030c18 strd r2, r3, [sp, 0x10]                       |         __asm ("strd r2, r3, [var_10h]");
    0x00030c1c ldr r2, [sp, 0x220]                           |         r2 = var_220h;
    0x00030c20 ldr r3, [sp, 0x1c4]                           |         r3 = var_1c4h;
    0x00030c24 strd r8, sb, [sp, 0x18]                       |         __asm ("strd r8, sb, [var_18h]");
    0x00030c28 cmp r2, r3                                    |         
    0x00030c2c bne 0x2fc6c                                   |         
                                                             |     }
    0x00030c30 add r3, sp, 0x228                             |     r3 += var_228h;
    0x00030c34 ldrd r6, r7, [sp, 0x10]                       |     __asm ("ldrd r6, r7, [var_10h]");
    0x00030c38 ldr ip, [sp, 0x224]                           |     ip = var_224h;
    0x00030c3c ldrd r2, r3, [r3]                             |     __asm ("ldrd r2, r3, [r3]");
    0x00030c40 ldrd r8, sb, [sp]                             |     __asm ("ldrd r8, sb, [sp]");
    0x00030c44 adds r2, r2, r6                               |     r2 += r6;
    0x00030c48 adc r3, r3, r7                                |     __asm ("adc r3, r3, r7");
    0x00030c4c strd r2, r3, [sp]                             |     __asm ("strd r2, r3, [sp]");
    0x00030c50 add r3, sp, 0x230                             |     r3 += var_230h;
    0x00030c54 ldrd r0, r1, [r3]                             |     __asm ("ldrd r0, r1, [r3]");
    0x00030c58 ldrd r4, r5, [sp, 0x28]                       |     __asm ("ldrd r4, r5, [var_28h]");
    0x00030c5c add r3, sp, 0x238                             |     r3 += var_238h;
    0x00030c60 adds r0, r0, r4                               |     r0 += r4;
    0x00030c64 ldrd r6, r7, [sp, 0x20]                       |     __asm ("ldrd r6, r7, [var_20h]");
    0x00030c68 adc r1, r1, r5                                |     __asm ("adc r1, r1, r5");
    0x00030c6c ldrd r4, r5, [r3]                             |     __asm ("ldrd r4, r5, [r3]");
    0x00030c70 add r3, sp, 0x240                             |     r3 += var_240h;
    0x00030c74 adds r4, r4, r6                               |     r4 += r6;
    0x00030c78 adc r5, r5, r7                                |     __asm ("adc r5, r5, r7");
    0x00030c7c ldrd r6, r7, [r3]                             |     __asm ("ldrd r6, r7, [r3]");
    0x00030c80 add r3, sp, 0x200                             |     r3 += var_200h;
    0x00030c84 adds r6, r6, r8                               |     r6 += r8;
    0x00030c88 adc r7, r7, sb                                |     __asm ("adc r7, r7, sb");
    0x00030c8c ldrd r8, sb, [r3]                             |     __asm ("ldrd r8, sb, [r3]");
    0x00030c90 ldrd r2, r3, [sp, 0x18]                       |     __asm ("ldrd r2, r3, [var_18h]");
    0x00030c94 strd r0, r1, [sp, 0x10]                       |     __asm ("strd r0, r1, [var_10h]");
    0x00030c98 adds r8, r8, r2                               |     r8 += r2;
    0x00030c9c adc sb, sb, r3                                |     __asm ("adc sb, sb, r3");
    0x00030ca0 add r3, sp, 0x208                             |     r3 += var_208h;
    0x00030ca4 ldrd r0, r1, [r3]                             |     __asm ("ldrd r0, r1, [r3]");
    0x00030ca8 ldrd r2, r3, [sp, 8]                          |     __asm ("ldrd r2, r3, [var_ch]");
    0x00030cac strd r4, r5, [sp, 0x20]                       |     __asm ("strd r4, r5, [var_20h]");
    0x00030cb0 adds r0, r0, r2                               |     r0 += r2;
    0x00030cb4 adc r1, r1, r3                                |     __asm ("adc r1, r1, r3");
    0x00030cb8 add r3, sp, 0x210                             |     r3 += var_210h;
    0x00030cbc ldrd r4, r5, [r3]                             |     __asm ("ldrd r4, r5, [r3]");
    0x00030cc0 add r3, sp, 0x218                             |     r3 += var_218h;
    0x00030cc4 adds r4, r4, sl                               |     r4 += sl;
    0x00030cc8 adc r5, r5, fp                                |     __asm ("adc r5, r5, fp");
    0x00030ccc ldrd r2, r3, [r3]                             |     __asm ("ldrd r2, r3, [r3]");
    0x00030cd0 ldrd sl, fp, [sp, 0x38]                       |     __asm ("ldrd sl, fp, [var_38h]");
    0x00030cd4 strd r6, r7, [ip, 0x28]                       |     __asm ("strd r6, r7, [ip, 0x28]");
    0x00030cd8 adds r2, r2, sl                               |     r2 += sl;
    0x00030cdc adc r3, r3, fp                                |     __asm ("adc r3, r3, fp");
    0x00030ce0 ldrd sl, fp, [sp]                             |     __asm ("ldrd sl, fp, [sp]");
    0x00030ce4 strd r8, sb, [ip, 0x30]                       |     __asm ("strd r8, sb, [ip, 0x30]");
    0x00030ce8 strd sl, fp, [ip, 0x10]                       |     __asm ("strd sl, fp, [ip, 0x10]");
    0x00030cec ldrd sl, fp, [sp, 0x10]                       |     __asm ("ldrd sl, fp, [var_10h]");
    0x00030cf0 strd r0, r1, [ip, 0x38]                       |     __asm ("strd r0, r1, [ip, 0x38]");
    0x00030cf4 strd sl, fp, [ip, 0x18]                       |     __asm ("strd sl, fp, [ip, 0x18]");
    0x00030cf8 ldrd sl, fp, [sp, 0x20]                       |     __asm ("ldrd sl, fp, [var_20h]");
    0x00030cfc strd r4, r5, [ip, 0x40]                       |     __asm ("strd r4, r5, [ip, 0x40]");
    0x00030d00 strd sl, fp, [ip, 0x20]                       |     __asm ("strd sl, fp, [ip, 0x20]");
    0x00030d04 strd r2, r3, [ip, 0x48]                       |     __asm ("strd r2, r3, [ip, 0x48]");
    0x00030d08 add sp, sp, 0x4c0                             |     
    0x00030d0c add sp, sp, 0xc                               |     
    0x00030d10 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | }

[*] Function mmap used 1 times libmbedcrypto.so.2.2.1