[*] Binary protection state of libcrypt.so.2.0.0

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


[*] Function strcpy tear down of libcrypt.so.2.0.0

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libcrypt.so.2.0.0 @ 0x5c98 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                             |                                ((n & 0x0000ff00) <<  8) | \
                                                             |                                ((n & 0x00ff0000) >>  8) | \
                                                             |                                ((n & 0xff000000) >> 24)))
                                                             |  
    ; (fcn) fcn.00005c98 ()                                  | void fcn_00005c98 (int16_t arg1, uint32_t arg2) {
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     int16_t var_48h;
                                                             |     int16_t var_4ch;
                                                             |     int16_t var_50h;
                                                             |     int16_t var_54h;
                                                             |     int16_t var_58h;
                                                             |     int16_t var_5ch;
                                                             |     int16_t var_60h;
                                                             |     int16_t var_64h;
                                                             |     int16_t var_68h;
                                                             |     int16_t var_6ch;
                                                             |     int16_t var_70h;
                                                             |     int16_t var_74h;
                                                             |     int16_t var_78h;
                                                             |     int16_t var_7ch;
                                                             |     int16_t var_80h;
                                                             |     int16_t var_84h;
                                                             |     int16_t var_88h;
                                                             |     int16_t var_8ch;
                                                             |     int16_t var_90h;
                                                             |     int16_t var_94h;
                                                             |     int16_t var_98h;
                                                             |     int16_t var_9ch;
                                                             |     int16_t var_a0h;
                                                             |     int16_t var_a4h;
                                                             |     int16_t var_a8h;
                                                             |     int16_t var_ach;
                                                             |     int16_t var_b0h;
                                                             |     int16_t var_b4h;
                                                             |     int16_t var_b8h;
                                                             |     int16_t var_bch;
                                                             |     int16_t var_c0h;
                                                             |     int16_t var_c4h;
                                                             |     int16_t var_c8h;
                                                             |     int16_t var_cch;
                                                             |     int16_t var_d0h;
                                                             |     int16_t var_d4h;
                                                             |     int16_t var_d8h;
                                                             |     int16_t var_dch;
                                                             |     int16_t var_e0h;
                                                             |     int16_t var_e4h;
                                                             |     int16_t var_e8h;
                                                             |     int16_t var_ech;
                                                             |     int16_t var_f0h;
                                                             |     int16_t var_f4h;
                                                             |     int16_t var_f8h;
                                                             |     int16_t var_fch;
                                                             |     int16_t var_100h;
                                                             |     int16_t var_104h;
                                                             |     int16_t var_108h;
                                                             |     int16_t var_10ch;
                                                             |     int16_t var_110h;
                                                             |     int16_t var_118h;
                                                             |     int32_t var_0h;
                                                             |     int32_t var_8h_2;
                                                             |     int16_t var_150h;
                                                             |     int16_t var_350h;
                                                             |     int16_t var_3d4h;
                                                             |     int16_t var_3dch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00005c98 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00005c9c sub.w sp, sp, 0x3dc                           |     
    0x00005ca0 str r0, [sp, 0x10c]                           |     var_10ch = r0;
    0x00005ca2 add r6, sp, 0x150                             |     r6 += var_150h;
    0x00005ca4 add.w r7, r1, 0x80                            |     r7 = r1 + 0x80;
    0x00005ca8 mov r3, r6                                    |     r3 = r6;
    0x00005caa ldr r0, [pc, 0x1d4]                           |     
    0x00005cac ldr r2, [pc, 0x1d4]                           |     r2 = *(0x5e84);
    0x00005cae add r0, pc                                    |     r0 = 0xbb34;
    0x00005cb0 ldr r2, [r0, r2]                              |     
    0x00005cb2 ldr r2, [r2]                                  |     r2 = *(0xbb34);
    0x00005cb4 str r2, [sp, 0x3d4]                           |     var_3d4h = r2;
    0x00005cb6 mov.w r2, 0                                   |     r2 = 0;
                                                             |     do {
    0x00005cba vld1.64 {d16}, [r1]!                          |         __asm ("vld1.64 {d16}, [r1]!");
    0x00005cbe adds r3, 8                                    |         r3 += 8;
    0x00005cc0 vmov r4, r5, d16                              |         __asm ("vmov r4, r5, d16");
    0x00005cc4 cmp r1, r7                                    |         
    0x00005cc6 rev r2, r4                                    |         r4 = SWAP32 (r2);
    0x00005cc8 rev r0, r5                                    |         r5 = SWAP32 (r0);
    0x00005cca strd r0, r2, [r3, -0x8]                       |         __asm ("strd r0, r2, [r3, -0x8]");
    0x00005cce bne 0x5cba                                    |         
                                                             |     } while (r1 != r7);
    0x00005cd0 ldr r3, [sp, 0x10c]                           |     r3 = var_10ch;
    0x00005cd2 add r7, sp, 0x110                             |     r7 += var_110h;
    0x00005cd4 str r7, [sp, 0x108]                           |     var_108h = r7;
    0x00005cd6 mov r4, r3                                    |     r4 = r3;
    0x00005cd8 add.w ip, r3, 0x40                            |     
                                                             |     do {
    0x00005cdc ldr r0, [r4]                                  |         r0 = *(r4);
    0x00005cde adds r4, 0x10                                 |         r4 += 0x10;
    0x00005ce0 ldr r1, [r4, -0xc]                            |         r1 = *((r4 - 0xc));
    0x00005ce4 mov r5, r7                                    |         r5 = r7;
    0x00005ce6 ldr r2, [r4, -0x8]                            |         r2 = *((r4 - 0x8));
    0x00005cea adds r7, 0x10                                 |         r7 += 0x10;
    0x00005cec ldr r3, [r4, -0x4]                            |         r3 = *((r4 - 0x4));
    0x00005cf0 cmp r4, ip                                    |         
    0x00005cf2 stm r5!, {r0, r1, r2, r3}                     |         *(r5!) = r0;
                                                             |         *((r5! + 4)) = r1;
                                                             |         *((r5! + 8)) = r2;
                                                             |         *((r5! + 12)) = r3;
    0x00005cf4 bne 0x5cdc                                    |         
                                                             |     } while (r4 != ip);
    0x00005cf6 ldr r3, [sp, 0x108]                           |     r3 = var_108h;
    0x00005cf8 movw sb, 0xfbcf                               |     
    0x00005cfc movw r7, 0x4491                               |     
    0x00005d00 movw r0, 0xae22                               |     
    0x00005d04 str r6, [sp, 4]                               |     var_4h = r6;
    0x00005d06 movw r1, 0x2f98                               |     
    0x00005d0a ldr r2, [r3, 0x38]                            |     r2 = *((r3 + 0x38));
    0x00005d0c movw ip, 0x65cd                               |     
    0x00005d10 movt sb, 0xb5c0                               |     sb = 0xb5c0fbcf;
    0x00005d14 movt r7, 0x7137                               |     r7 = 0x71374491;
    0x00005d18 movt r0, 0xd728                               |     r0 = 0xd728ae22;
    0x00005d1c movt r1, 0x428a                               |     r1 = 0x428a2f98;
    0x00005d20 str r2, [sp, 0x50]                            |     var_50h = r2;
    0x00005d22 movt ip, 0x23ef                               |     ip = 0x23ef65cd;
    0x00005d26 ldr r2, [r3, 0x3c]                            |     r2 = *((r3 + 0x3c));
    0x00005d28 str r2, [sp, 0x54]                            |     var_54h = r2;
    0x00005d2a ldr r2, [r3, 0x20]                            |     r2 = *((r3 + 0x20));
    0x00005d2c str r2, [sp, 0x44]                            |     var_44h = r2;
    0x00005d2e movw r2, 0x2694                               |     
    0x00005d32 movt r2, 0xcf69                               |     r2 = 0xcf692694;
    0x00005d36 str r2, [sp, 0xbc]                            |     var_bch = r2;
    0x00005d38 movw r2, 0xf174                               |     
    0x00005d3c movt r2, 0xc19b                               |     r2 = 0xc19bf174;
    0x00005d40 str r2, [sp, 0xc0]                            |     var_c0h = r2;
    0x00005d42 movw r2, 0x1235                               |     
    0x00005d46 movt r2, 0x25c7                               |     r2 = 0x25c71235;
    0x00005d4a str r2, [sp, 0xb4]                            |     var_b4h = r2;
    0x00005d4c movw r2, 0x6a7                                |     
    0x00005d50 movt r2, 0x9bdc                               |     r2 = 0x9bdc06a7;
    0x00005d54 str r2, [sp, 0xb8]                            |     var_b8h = r2;
    0x00005d56 movw r2, 0x96b1                               |     
    0x00005d5a movt r2, 0x3b16                               |     r2 = 0x3b1696b1;
    0x00005d5e str r2, [sp, 0xac]                            |     var_ach = r2;
    0x00005d60 movw r2, 0xb1fe                               |     
    0x00005d64 movt r2, 0x80de                               |     r2 = 0x80deb1fe;
    0x00005d68 str r2, [sp, 0xb0]                            |     var_b0h = r2;
    0x00005d6a movw r2, 0x896f                               |     
    0x00005d6e movt r2, 0xf27b                               |     r2 = 0xf27b896f;
    0x00005d72 str r2, [sp, 0xa4]                            |     var_a4h = r2;
    0x00005d74 movw r2, 0x5d74                               |     
    0x00005d78 movt r2, 0x72be                               |     r2 = 0x72be5d74;
    0x00005d7c str r2, [sp, 0xa8]                            |     var_a8h = r2;
    0x00005d7e movw r2, 0xb4e2                               |     
    0x00005d82 movt r2, 0xd5ff                               |     r2 = 0xd5ffb4e2;
    0x00005d86 str r2, [sp, 0x9c]                            |     var_9ch = r2;
    0x00005d88 movw r2, 0x7dc3                               |     
    0x00005d8c movt r2, 0x550c                               |     r2 = 0x550c7dc3;
    0x00005d90 str r2, [sp, 0xa0]                            |     var_a0h = r2;
    0x00005d92 movw r2, 0xb28c                               |     
    0x00005d96 movt r2, 0x4ee4                               |     r2 = 0x4ee4b28c;
    0x00005d9a str r2, [sp, 0x94]                            |     var_94h = r2;
    0x00005d9c movw r2, 0x85be                               |     
    0x00005da0 movt r2, 0x2431                               |     r2 = 0x243185be;
    0x00005da4 str r2, [sp, 0x98]                            |     var_98h = r2;
    0x00005da6 movw r2, 0x6fbe                               |     
    0x00005daa movt r2, 0x4570                               |     r2 = 0x45706fbe;
    0x00005dae str r2, [sp, 0x80]                            |     var_80h = r2;
    0x00005db0 movw r2, 0x5b01                               |     
    0x00005db4 movt r2, 0x1283                               |     r2 = 0x12835b01;
    0x00005db8 str r2, [sp, 0x8c]                            |     var_8ch = r2;
    0x00005dba movw r2, 0x242                                |     
    0x00005dbe movt r2, 0xa303                               |     r2 = 0xa3030242;
    0x00005dc2 str r2, [sp, 0x78]                            |     var_78h = r2;
    0x00005dc4 movw r2, 0xaa98                               |     
    0x00005dc8 movt r2, 0xd807                               |     r2 = 0xd807aa98;
    0x00005dcc str r2, [sp, 0x7c]                            |     var_7ch = r2;
    0x00005dce movw r2, 0x8118                               |     
    0x00005dd2 movt r2, 0xda6d                               |     r2 = 0xda6d8118;
    0x00005dd6 str r2, [sp, 0x70]                            |     var_70h = r2;
    0x00005dd8 movw r2, 0x5ed5                               |     
    0x00005ddc movt r2, 0xab1c                               |     r2 = 0xab1c5ed5;
    0x00005de0 str r2, [sp, 0x74]                            |     var_74h = r2;
    0x00005de2 movw r2, 0x4f9b                               |     
    0x00005de6 movt r2, 0xaf19                               |     r2 = 0xaf194f9b;
    0x00005dea str r2, [sp, 0x68]                            |     var_68h = r2;
    0x00005dec movw r2, 0x82a4                               |     
    0x00005df0 movt r2, 0x923f                               |     r2 = 0x923f82a4;
    0x00005df4 str r2, [sp, 0x6c]                            |     var_6ch = r2;
    0x00005df6 movw r2, 0xd019                               |     
    0x00005dfa movt r2, 0xb605                               |     r2 = 0xb605d019;
    0x00005dfe str r2, [sp, 0x60]                            |     var_60h = r2;
    0x00005e00 movw r2, 0x11f1                               |     
    0x00005e04 movt r2, 0x59f1                               |     r2 = 0x59f111f1;
    0x00005e08 str r2, [sp, 0x64]                            |     var_64h = r2;
    0x00005e0a movw r2, 0xb538                               |     
    0x00005e0e movt r2, 0xf348                               |     r2 = 0xf348b538;
    0x00005e12 str r2, [sp, 0x58]                            |     var_58h = r2;
    0x00005e14 movw r2, 0xc25b                               |     
    0x00005e18 movt r2, 0x3956                               |     r2 = 0x3956c25b;
    0x00005e1c str r2, [sp, 0x5c]                            |     var_5ch = r2;
    0x00005e1e movw r2, 0xdbbc                               |     
    0x00005e22 movt r2, 0x8189                               |     r2 = 0x8189dbbc;
    0x00005e26 str r2, [sp, 0x40]                            |     var_40h = r2;
    0x00005e28 movw r2, 0xdba5                               |     
    0x00005e2c ldr r4, [r3, 0x24]                            |     r4 = *((r3 + 0x24));
    0x00005e2e movt r2, 0xe9b5                               |     r2 = 0xe9b5dba5;
    0x00005e32 str r2, [sp, 0x48]                            |     var_48h = r2;
    0x00005e34 movw r2, 0x3b2f                               |     
    0x00005e38 movt r2, 0xec4d                               |     r2 = 0xec4d3b2f;
    0x00005e3c str.w ip, [sp, 0x14]                          |     __asm ("str.w ip, [var_14h]");
    0x00005e40 str r4, [sp, 0x34]                            |     var_34h = r4;
    0x00005e42 mov r8, r2                                    |     r8 = r2;
    0x00005e44 ldr r4, [r3, 0x28]                            |     r4 = *((r3 + 0x28));
    0x00005e46 str r4, [sp, 0x30]                            |     var_30h = r4;
    0x00005e48 ldr r4, [r3, 0x2c]                            |     r4 = *((r3 + 0x2c));
    0x00005e4a str r4, [sp, 0x10]                            |     var_10h = r4;
    0x00005e4c ldr r4, [r3, 0x30]                            |     r4 = *((r3 + 0x30));
    0x00005e4e str r4, [sp, 0x18]                            |     var_18h = r4;
    0x00005e50 ldr r4, [r3, 0x34]                            |     r4 = *((r3 + 0x34));
    0x00005e52 str r4, [sp, 0xc]                             |     var_ch = r4;
    0x00005e54 ldr r4, [r3, 0x18]                            |     r4 = *((r3 + 0x18));
    0x00005e56 str r4, [sp, 0x4c]                            |     var_4ch = r4;
    0x00005e58 ldr r4, [r3, 0x1c]                            |     r4 = *((r3 + 0x1c));
    0x00005e5a str r4, [sp, 0x24]                            |     var_24h = r4;
    0x00005e5c ldr r4, [r3]                                  |     r4 = *(r3);
    0x00005e5e str r4, [sp, 0x38]                            |     var_38h = r4;
    0x00005e60 ldr r4, [r3, 4]                               |     r4 = *((r3 + 4));
    0x00005e62 str r4, [sp, 0x3c]                            |     var_3ch = r4;
    0x00005e64 ldr r4, [r3, 8]                               |     r4 = *((r3 + 8));
    0x00005e66 str r4, [sp, 0x1c]                            |     var_1ch = r4;
    0x00005e68 ldr r4, [r3, 0xc]                             |     r4 = *((r3 + 0xc));
    0x00005e6a str r4, [sp, 8]                               |     var_8h = r4;
    0x00005e6c ldr r4, [r3, 0x10]                            |     r4 = *((r3 + 0x10));
    0x00005e6e ldr r3, [r3, 0x14]                            |     r3 = *((r3 + 0x14));
    0x00005e70 str r4, [sp, 0x28]                            |     var_28h = r4;
    0x00005e72 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00005e74 ldr r3, [pc, 0x10]                            |     
    0x00005e76 add r3, pc                                    |     r3 = 0xbd02;
    0x00005e78 str r3, [sp, 0xc4]                            |     var_c4h = r3;
    0x00005e7a add r3, sp, 0x350                             |     r3 += var_350h;
    0x00005e7c str r3, [sp, 0x104]                           |     var_104h = r3;
    0x00005e7e b 0x5e8c                                      |     
                                                             |     while (1) {
    0x00005e8c ldr r6, [sp, 0x44]                            |         r6 = var_44h;
    0x00005e8e ldr r4, [sp, 0x34]                            |         r4 = var_34h;
    0x00005e90 lsrs r3, r6, 0xe                              |         r3 = r6 >> 0xe;
    0x00005e92 lsrs r2, r6, 0x12                             |         r2 = r6 >> 0x12;
    0x00005e94 lsrs r5, r4, 0xe                              |         r5 = r4 >> 0xe;
    0x00005e96 orr.w r2, r2, r4, lsl 14                      |         r2 |= (r4 << 14);
    0x00005e9a orr.w r3, r3, r4, lsl 18                      |         r3 |= (r4 << 18);
    0x00005e9e orr.w r5, r5, r6, lsl 18                      |         r5 |= (r6 << 18);
    0x00005ea2 eors r3, r2                                   |         r3 ^= r2;
    0x00005ea4 lsrs r2, r4, 0x12                             |         r2 = r4 >> 0x12;
    0x00005ea6 orr.w r2, r2, r6, lsl 14                      |         r2 |= (r6 << 14);
    0x00005eaa eors r5, r2                                   |         r5 ^= r2;
    0x00005eac lsls r2, r6, 0x17                             |         r2 = r6 << 0x17;
    0x00005eae orr.w r2, r2, r4, lsr 9                       |         r2 |= (r4 >> 9);
    0x00005eb2 eors r3, r2                                   |         r3 ^= r2;
    0x00005eb4 lsls r2, r4, 0x17                             |         r2 = r4 << 0x17;
    0x00005eb6 ldr r4, [sp, 0x18]                            |         r4 = var_18h;
    0x00005eb8 orr.w r2, r2, r6, lsr 9                       |         r2 |= (r6 >> 9);
    0x00005ebc eors r5, r2                                   |         r5 ^= r2;
    0x00005ebe ldr r2, [sp, 0x30]                            |         r2 = var_30h;
    0x00005ec0 eors r2, r4                                   |         r2 ^= r4;
    0x00005ec2 ands r2, r6                                   |         r2 &= r6;
    0x00005ec4 eors r2, r4                                   |         r2 ^= r4;
    0x00005ec6 ldr r4, [sp, 0x34]                            |         r4 = var_34h;
    0x00005ec8 adds r3, r3, r2                               |         r3 += r2;
    0x00005eca ldrd r6, r2, [sp, 0xc]                        |         __asm ("ldrd r6, r2, [var_10h]");
    0x00005ece eor.w r2, r2, r6                              |         r2 ^= r6;
    0x00005ed2 and.w r2, r2, r4                              |         r2 &= r4;
    0x00005ed6 ldr r4, [sp, 0x1c]                            |         r4 = var_1ch;
    0x00005ed8 eor.w r2, r2, r6                              |         r2 ^= r6;
    0x00005edc ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00005ede adc.w r2, r5, r2                              |         __asm ("adc.w r2, r5, r2");
    0x00005ee2 ldr r5, [r6]                                  |         r5 = *(r6);
    0x00005ee4 adds r3, r3, r5                               |         r3 += r5;
    0x00005ee6 str r5, [sp, 0xc8]                            |         var_c8h = r5;
    0x00005ee8 ldr r5, [r6, 4]                               |         r5 = *((r6 + 4));
    0x00005eea ldr r6, [sp, 0x3c]                            |         r6 = var_3ch;
    0x00005eec adc.w r2, r5, r2                              |         __asm ("adc.w r2, r5, r2");
    0x00005ef0 str r5, [sp, 0xcc]                            |         var_cch = r5;
    0x00005ef2 ldr r5, [sp, 0x50]                            |         r5 = var_50h;
    0x00005ef4 adds r3, r3, r5                               |         r3 += r5;
    0x00005ef6 ldr r5, [sp, 0x54]                            |         r5 = var_54h;
    0x00005ef8 adc.w r2, r5, r2                              |         __asm ("adc.w r2, r5, r2");
    0x00005efc adds r3, r3, r0                               |         r3 += r0;
    0x00005efe adc.w lr, r1, r2                              |         __asm ("adc.w lr, r1, r2");
    0x00005f02 ldr r1, [sp, 0x38]                            |         r1 = var_38h;
    0x00005f04 ldr r5, [sp, 0x4c]                            |         r5 = var_4ch;
    0x00005f06 lsrs r0, r1, 0x1c                             |         r0 = r1 >> 0x1c;
    0x00005f08 lsls r2, r1, 0x1e                             |         r2 = r1 << 0x1e;
    0x00005f0a adds.w fp, r3, r5                             |         
    0x00005f0e ldr r5, [sp, 0x24]                            |         r5 = var_24h;
    0x00005f10 orr.w r2, r2, r6, lsr 2                       |         r2 |= (r6 >> 2);
    0x00005f14 orr.w r0, r0, r6, lsl 4                       |         r0 |= (r6 << 4);
    0x00005f18 adc.w sl, lr, r5                              |         __asm ("adc.w sl, lr, r5");
    0x00005f1c eors r0, r2                                   |         r0 ^= r2;
    0x00005f1e lsrs r5, r6, 0x1c                             |         r5 = r6 >> 0x1c;
    0x00005f20 lsls r2, r6, 0x1e                             |         r2 = r6 << 0x1e;
    0x00005f22 orr.w r5, r5, r1, lsl 4                       |         r5 |= (r1 << 4);
    0x00005f26 orr.w r2, r2, r1, lsr 2                       |         r2 |= (r1 >> 2);
    0x00005f2a eors r5, r2                                   |         r5 ^= r2;
    0x00005f2c lsls r2, r1, 0x19                             |         r2 = r1 << 0x19;
    0x00005f2e orr.w r2, r2, r6, lsr 7                       |         r2 |= (r6 >> 7);
    0x00005f32 eors r0, r2                                   |         r0 ^= r2;
    0x00005f34 lsls r2, r6, 0x19                             |         r2 = r6 << 0x19;
    0x00005f36 mov r6, r1                                    |         r6 = r1;
    0x00005f38 orr.w r2, r2, r1, lsr 7                       |         r2 |= (r1 >> 7);
    0x00005f3c ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x00005f3e eors r5, r2                                   |         r5 ^= r2;
    0x00005f40 ldr r2, [sp, 8]                               |         r2 = var_8h;
    0x00005f42 orrs r1, r4                                   |         r1 |= r4;
    0x00005f44 ands r1, r6                                   |         r1 &= r6;
    0x00005f46 ldr r6, [sp, 0x2c]                            |         r6 = var_2ch;
    0x00005f48 orrs r2, r6                                   |         r2 |= r6;
    0x00005f4a ldr r6, [sp, 0x3c]                            |         r6 = var_3ch;
    0x00005f4c ands r2, r6                                   |         r2 &= r6;
    0x00005f4e ldr r6, [sp, 0x28]                            |         r6 = var_28h;
    0x00005f50 ands r6, r4                                   |         r6 &= r4;
    0x00005f52 ldr r4, [sp, 8]                               |         r4 = var_8h;
    0x00005f54 orrs r1, r6                                   |         r1 |= r6;
    0x00005f56 lsr.w r6, fp, 0x12                            |         r6 = fp >> 0x12;
    0x00005f5a adds r0, r0, r1                               |         r0 += r1;
    0x00005f5c lsr.w r1, fp, 0xe                             |         r1 = fp >> 0xe;
    0x00005f60 orr.w r6, r6, sl, lsl 14                      |         r6 |= (sl << 14);
    0x00005f64 orr.w r1, r1, sl, lsl 18                      |         r1 |= (sl << 18);
    0x00005f68 eor.w r1, r1, r6                              |         r1 ^= r6;
    0x00005f6c ldr r6, [sp, 0x2c]                            |         r6 = var_2ch;
    0x00005f6e and.w r6, r4, r6                              |         r6 = r4 & r6;
    0x00005f72 orr.w r2, r2, r6                              |         r2 |= r6;
    0x00005f76 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00005f78 adc.w r2, r5, r2                              |         __asm ("adc.w r2, r5, r2");
    0x00005f7c adds r0, r0, r3                               |         r0 += r3;
    0x00005f7e ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00005f80 adc.w lr, lr, r2                              |         __asm ("adc.w lr, lr, r2");
    0x00005f84 ldr r5, [r6, 8]                               |         r5 = *((r6 + 8));
    0x00005f86 lsr.w r2, sl, 0xe                             |         r2 = sl >> 0xe;
    0x00005f8a str r0, [sp, 0x24]                            |         var_24h = r0;
    0x00005f8c orr.w r2, r2, fp, lsl 18                      |         r2 |= (fp << 18);
    0x00005f90 str r5, [sp, 0xd0]                            |         var_d0h = r5;
    0x00005f92 adds r5, r5, r3                               |         r5 += r3;
    0x00005f94 lsr.w r3, sl, 0x12                            |         r3 = sl >> 0x12;
    0x00005f98 orr.w r3, r3, fp, lsl 14                      |         r3 |= (fp << 14);
    0x00005f9c eor.w r2, r2, r3                              |         r2 ^= r3;
    0x00005fa0 lsl.w r3, fp, 0x17                            |         r3 = fp << 0x17;
    0x00005fa4 orr.w r3, r3, sl, lsr 9                       |         r3 |= (sl >> 9);
    0x00005fa8 eor.w r1, r1, r3                              |         r1 ^= r3;
    0x00005fac ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00005fae ldr r0, [sp, 0x30]                            |         r0 = var_30h;
    0x00005fb0 eor.w r3, r3, r0                              |         r3 ^= r0;
    0x00005fb4 and.w r3, r3, fp                              |         r3 &= fp;
    0x00005fb8 eor.w r3, r3, r0                              |         r3 ^= r0;
    0x00005fbc ldr r0, [r6, 0xc]                             |         r0 = *((r6 + 0xc));
    0x00005fbe mov r4, r0                                    |         r4 = r0;
    0x00005fc0 str r0, [sp, 0xd4]                            |         var_d4h = r0;
    0x00005fc2 ldr r0, [sp, 0xc]                             |         r0 = var_ch;
    0x00005fc4 adc.w r6, r4, r0                              |         __asm ("adc.w r6, r4, r0");
    0x00005fc8 adds r3, r3, r5                               |         r3 += r5;
    0x00005fca lsl.w r5, sl, 0x17                            |         r5 = sl << 0x17;
    0x00005fce ldr r0, [sp, 0x10]                            |         r0 = var_10h;
    0x00005fd0 lsr.w r4, lr, 0x1c                            |         r4 = lr >> 0x1c;
    0x00005fd4 orr.w r5, r5, fp, lsr 9                       |         r5 |= (fp >> 9);
    0x00005fd8 eor.w r2, r2, r5                              |         r2 ^= r5;
    0x00005fdc ldr r5, [sp, 0x34]                            |         r5 = var_34h;
    0x00005fde eor.w r5, r5, r0                              |         r5 ^= r0;
    0x00005fe2 and.w r5, r5, sl                              |         r5 &= sl;
    0x00005fe6 eor.w r5, r5, r0                              |         r5 ^= r0;
    0x00005fea adc.w r5, r5, r6                              |         __asm ("adc.w r5, r5, r6");
    0x00005fee adds.w ip, r1, r3                             |         
    0x00005ff2 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00005ff4 adc.w r2, r2, r5                              |         __asm ("adc.w r2, r2, r5");
    0x00005ff8 ldr r6, [sp, 0x3c]                            |         r6 = var_3ch;
    0x00005ffa adds.w ip, ip, r3                             |         
    0x00005ffe ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x00006000 adc.w r7, r7, r2                              |         __asm ("adc.w r7, r7, r2");
    0x00006004 ldr r2, [sp, 0x1c]                            |         r2 = var_1ch;
    0x00006006 adds.w r5, ip, r3                             |         r5 = ip + r3;
    0x0000600a ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x0000600c str r5, [sp, 0x14]                            |         var_14h = r5;
    0x0000600e ldr r5, [sp, 0x38]                            |         r5 = var_38h;
    0x00006010 adc.w r0, r7, r3                              |         __asm ("adc.w r0, r7, r3");
    0x00006014 str r0, [sp, 0x28]                            |         var_28h = r0;
    0x00006016 ldr r0, [sp, 0x24]                            |         r0 = var_24h;
    0x00006018 orrs r2, r5                                   |         r2 |= r5;
    0x0000601a ands r2, r0                                   |         r2 &= r0;
    0x0000601c lsrs r1, r0, 0x1c                             |         r1 = r0 >> 0x1c;
    0x0000601e lsls r3, r0, 0x1e                             |         r3 = r0 << 0x1e;
    0x00006020 orr.w r4, r4, r0, lsl 4                       |         r4 |= (r0 << 4);
    0x00006024 orr.w r3, r3, lr, lsr 2                       |         r3 |= (lr >> 2);
    0x00006028 orr.w r1, r1, lr, lsl 4                       |         r1 |= (lr << 4);
    0x0000602c eors r1, r3                                   |         r1 ^= r3;
    0x0000602e lsl.w r3, lr, 0x1e                            |         r3 = lr << 0x1e;
    0x00006032 orr.w r3, r3, r0, lsr 2                       |         r3 |= (r0 >> 2);
    0x00006036 eors r4, r3                                   |         r4 ^= r3;
    0x00006038 lsls r3, r0, 0x19                             |         r3 = r0 << 0x19;
    0x0000603a orr.w r3, r3, lr, lsr 7                       |         r3 |= (lr >> 7);
    0x0000603e eors r1, r3                                   |         r1 ^= r3;
    0x00006040 lsl.w r3, lr, 0x19                            |         r3 = lr << 0x19;
    0x00006044 orr.w r3, r3, r0, lsr 7                       |         r3 |= (r0 >> 7);
    0x00006048 ldr r0, [sp, 8]                               |         r0 = var_8h;
    0x0000604a eors r4, r3                                   |         r4 ^= r3;
    0x0000604c mov r3, r6                                    |         r3 = r6;
    0x0000604e orrs r3, r0                                   |         r3 |= r0;
    0x00006050 ldr r0, [sp, 0x1c]                            |         r0 = var_1ch;
    0x00006052 and.w r3, r3, lr                              |         r3 &= lr;
    0x00006056 ands r5, r0                                   |         r5 &= r0;
    0x00006058 ldr r0, [sp, 0x28]                            |         r0 = var_28h;
    0x0000605a orrs r2, r5                                   |         r2 |= r5;
    0x0000605c ldr r5, [sp, 0x14]                            |         r5 = var_14h;
    0x0000605e adds r1, r1, r2                               |         r1 += r2;
    0x00006060 lsr.w r2, r5, 0xe                             |         r2 = r5 >> 0xe;
    0x00006064 lsr.w r5, r5, 0x12                            |         r5 >>= 0x12;
    0x00006068 orr.w r2, r2, r0, lsl 18                      |         r2 |= (r0 << 18);
    0x0000606c orr.w r5, r5, r0, lsl 14                      |         r5 |= (r0 << 14);
    0x00006070 eor.w r2, r2, r5                              |         r2 ^= r5;
    0x00006074 mov r5, r6                                    |         r5 = r6;
    0x00006076 ldr r6, [sp, 8]                               |         r6 = var_8h;
    0x00006078 and.w r5, r5, r6                              |         r5 &= r6;
    0x0000607c ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x0000607e orr.w r3, r3, r5                              |         r3 |= r5;
    0x00006082 adc.w r3, r4, r3                              |         __asm ("adc.w r3, r4, r3");
    0x00006086 adds.w r1, r1, ip                             |         r1 += ip;
    0x0000608a adc.w r3, r7, r3                              |         __asm ("adc.w r3, r7, r3");
    0x0000608e ldr r4, [sp, 0x30]                            |         r4 = var_30h;
    0x00006090 str r3, [sp, 0xc]                             |         var_ch = r3;
    0x00006092 mov r7, r0                                    |         r7 = r0;
    0x00006094 ldr r3, [r6, 0x10]                            |         r3 = *((r6 + 0x10));
    0x00006096 str r1, [sp, 0x20]                            |         var_20h = r1;
    0x00006098 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x0000609a adds r5, r3, r4                               |         r5 = r3 + r4;
    0x0000609c str r3, [sp, 0xd8]                            |         var_d8h = r3;
    0x0000609e lsr.w r4, r0, 0xe                             |         r4 = r0 >> 0xe;
    0x000060a2 lsr.w r3, r0, 0x12                            |         r3 = r0 >> 0x12;
    0x000060a6 orr.w r4, r4, r1, lsl 18                      |         r4 |= (r1 << 18);
    0x000060aa orr.w r3, r3, r1, lsl 14                      |         r3 |= (r1 << 14);
    0x000060ae eor.w r4, r4, r3                              |         r4 ^= r3;
    0x000060b2 lsl.w r3, r1, 0x17                            |         r3 = r1 << 0x17;
    0x000060b6 ldr r1, [sp, 0x44]                            |         r1 = var_44h;
    0x000060b8 orr.w r3, r3, r0, lsr 9                       |         r3 |= (r0 >> 9);
    0x000060bc ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x000060be eor.w r2, r2, r3                              |         r2 ^= r3;
    0x000060c2 eor.w r3, fp, r1                              |         r3 = fp ^ r1;
    0x000060c6 and.w r3, r3, r0                              |         r3 &= r0;
    0x000060ca eor.w r3, r3, r1                              |         r3 ^= r1;
    0x000060ce ldr r1, [r6, 0x14]                            |         r1 = *((r6 + 0x14));
    0x000060d0 ldr r6, [sp, 0x10]                            |         r6 = var_10h;
    0x000060d2 str r1, [sp, 0xdc]                            |         var_dch = r1;
    0x000060d4 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x000060d6 adc.w r6, r1, r6                              |         __asm ("adc.w r6, r1, r6");
    0x000060da adds r3, r3, r5                               |         r3 += r5;
    0x000060dc lsl.w r5, r7, 0x17                            |         r5 = r7 << 0x17;
    0x000060e0 ldr r1, [sp, 0x34]                            |         r1 = var_34h;
    0x000060e2 orr.w r5, r5, r0, lsr 9                       |         r5 |= (r0 >> 9);
    0x000060e6 eor.w r4, r4, r5                              |         r4 ^= r5;
    0x000060ea eor.w r5, sl, r1                              |         r5 = sl ^ r1;
    0x000060ee and.w r5, r5, r7                              |         r5 &= r7;
    0x000060f2 ldr r7, [sp, 0x24]                            |         r7 = var_24h;
    0x000060f4 eor.w r5, r5, r1                              |         r5 ^= r1;
    0x000060f8 ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x000060fa adc.w r5, r5, r6                              |         __asm ("adc.w r5, r5, r6");
    0x000060fe adds r3, r2, r3                               |         r3 = r2 + r3;
    0x00006100 ldr r2, [sp, 0x1c]                            |         r2 = var_1ch;
    0x00006102 adc.w r4, r4, r5                              |         __asm ("adc.w r4, r4, r5");
    0x00006106 adds.w r3, r3, r8                             |         r3 += r8;
    0x0000610a ldr r5, [sp, 0xc]                             |         r5 = var_ch;
    0x0000610c adc.w r4, sb, r4                              |         __asm ("adc.w r4, sb, r4");
    0x00006110 ldr r6, [sp, 0xc]                             |         r6 = var_ch;
    0x00006112 adds r2, r3, r2                               |         r2 = r3 + r2;
    0x00006114 mov r0, r2                                    |         r0 = r2;
    0x00006116 ldr r2, [sp, 8]                               |         r2 = var_8h;
    0x00006118 lsr.w ip, r6, 0x1c                            |         
    0x0000611c adc.w r2, r4, r2                              |         __asm ("adc.w r2, r4, r2");
    0x00006120 str r2, [sp, 0x1c]                            |         var_1ch = r2;
    0x00006122 lsrs r2, r1, 0x1c                             |         r2 = r1 >> 0x1c;
    0x00006124 orr.w ip, ip, r1, lsl 4                       |         
    0x00006128 orr.w r2, r2, r5, lsl 4                       |         r2 |= (r5 << 4);
    0x0000612c lsls r5, r1, 0x1e                             |         r5 = r1 << 0x1e;
    0x0000612e orr.w r5, r5, r6, lsr 2                       |         r5 |= (r6 >> 2);
    0x00006132 eors r2, r5                                   |         r2 ^= r5;
    0x00006134 lsls r5, r6, 0x1e                             |         r5 = r6 << 0x1e;
    0x00006136 orr.w r5, r5, r1, lsr 2                       |         r5 |= (r1 >> 2);
    0x0000613a eor.w ip, ip, r5                              |         
    0x0000613e lsls r5, r1, 0x19                             |         r5 = r1 << 0x19;
    0x00006140 orr.w r5, r5, r6, lsr 7                       |         r5 |= (r6 >> 7);
    0x00006144 eor.w sb, r2, r5                              |         sb = r2 ^ r5;
    0x00006148 lsls r5, r6, 0x19                             |         r5 = r6 << 0x19;
    0x0000614a mov r2, r6                                    |         r2 = r6;
    0x0000614c orr.w r5, r5, r1, lsr 7                       |         r5 |= (r1 >> 7);
    0x00006150 ldr r1, [sp, 0x38]                            |         r1 = var_38h;
    0x00006152 eor.w ip, ip, r5                              |         
    0x00006156 ldr r5, [sp, 0x20]                            |         r5 = var_20h;
    0x00006158 orr.w r6, r7, r1                              |         r6 = r7 | r1;
    0x0000615c and.w r8, r7, r1                              |         r8 = r7 & r1;
    0x00006160 ldr r1, [sp, 0x1c]                            |         r1 = var_1ch;
    0x00006162 ands r6, r5                                   |         r6 &= r5;
    0x00006164 ldr r5, [sp, 0x3c]                            |         r5 = var_3ch;
    0x00006166 orr.w r6, r6, r8                              |         r6 |= r8;
    0x0000616a lsr.w r8, r0, 0x12                            |         r8 = r0 >> 0x12;
    0x0000616e ldr r7, [sp, 0x3c]                            |         r7 = var_3ch;
    0x00006170 orr.w r5, lr, r5                              |         r5 = lr | r5;
    0x00006174 orr.w r8, r8, r1, lsl 14                      |         r8 |= (r1 << 14);
    0x00006178 ands r5, r2                                   |         r5 &= r2;
    0x0000617a adds.w r2, sb, r6                             |         r2 = sb + r6;
    0x0000617e lsr.w r6, r0, 0xe                             |         r6 = r0 >> 0xe;
    0x00006182 orr.w r6, r6, r1, lsl 18                      |         r6 |= (r1 << 18);
    0x00006186 eor.w r6, r6, r8                              |         r6 ^= r8;
    0x0000618a and.w r8, lr, r7                              |         r8 = lr & r7;
    0x0000618e orr.w r5, r5, r8                              |         r5 |= r8;
    0x00006192 adc.w r5, ip, r5                              |         __asm ("adc.w r5, ip, r5");
    0x00006196 adds r1, r2, r3                               |         r1 = r2 + r3;
    0x00006198 adc.w r3, r4, r5                              |         __asm ("adc.w r3, r4, r5");
    0x0000619c str r1, [sp, 0x2c]                            |         var_2ch = r1;
    0x0000619e ldr r1, [sp, 0x1c]                            |         r1 = var_1ch;
    0x000061a0 str r3, [sp, 8]                               |         var_8h = r3;
    0x000061a2 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x000061a4 ldr r5, [sp, 0x44]                            |         r5 = var_44h;
    0x000061a6 mov r4, r1                                    |         r4 = r1;
    0x000061a8 lsr.w ip, r1, 0xe                             |         
    0x000061ac ldr r2, [r3, 0x18]                            |         r2 = *((r3 + 0x18));
    0x000061ae lsrs r3, r1, 0x12                             |         r3 = r1 >> 0x12;
    0x000061b0 orr.w ip, ip, r0, lsl 18                      |         
    0x000061b4 orr.w r3, r3, r0, lsl 14                      |         r3 |= (r0 << 14);
    0x000061b8 adds r5, r2, r5                               |         r5 = r2 + r5;
    0x000061ba str r2, [sp, 0xe0]                            |         var_e0h = r2;
    0x000061bc eor.w ip, ip, r3                              |         
    0x000061c0 lsl.w r3, r0, 0x17                            |         r3 = r0 << 0x17;
    0x000061c4 orr.w r3, r3, r1, lsr 9                       |         r3 |= (r1 >> 9);
    0x000061c8 ldr r1, [sp, 0x34]                            |         r1 = var_34h;
    0x000061ca eor.w r3, r3, r6                              |         r3 ^= r6;
    0x000061ce ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x000061d0 ldr r2, [r6, 0x1c]                            |         r2 = *((r6 + 0x1c));
    0x000061d2 lsl.w r6, r4, 0x17                            |         r6 = r4 << 0x17;
    0x000061d6 orr.w r6, r6, r0, lsr 9                       |         r6 |= (r0 >> 9);
    0x000061da adc.w r8, r2, r1                              |         __asm ("adc.w r8, r2, r1");
    0x000061de str r2, [sp, 0xe4]                            |         var_e4h = r2;
    0x000061e0 mov r1, r0                                    |         r1 = r0;
    0x000061e2 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x000061e4 eor.w ip, ip, r6                              |         
    0x000061e8 ldr r2, [sp, 0x40]                            |         r2 = var_40h;
    0x000061ea eor.w r6, fp, r0                              |         r6 = fp ^ r0;
    0x000061ee mov r0, r1                                    |         r0 = r1;
    0x000061f0 ands r6, r1                                   |         r6 &= r1;
    0x000061f2 ldr r1, [sp, 0x38]                            |         r1 = var_38h;
    0x000061f4 eor.w r6, r6, fp                              |         r6 ^= fp;
    0x000061f8 adds r6, r6, r5                               |         r6 += r5;
    0x000061fa ldr r5, [sp, 0x28]                            |         r5 = var_28h;
    0x000061fc eor.w r5, sl, r5                              |         r5 = sl ^ r5;
    0x00006200 and.w r5, r5, r4                              |         r5 &= r4;
    0x00006204 eor.w r5, r5, sl                              |         r5 ^= sl;
    0x00006208 adc.w r5, r5, r8                              |         __asm ("adc.w r5, r5, r8");
    0x0000620c adds r6, r3, r6                               |         r6 = r3 + r6;
    0x0000620e adc.w ip, ip, r5                              |         __asm ("adc.w ip, ip, r5");
    0x00006212 adds r6, r6, r2                               |         r6 += r2;
    0x00006214 ldr r2, [sp, 0x48]                            |         r2 = var_48h;
    0x00006216 adc.w ip, r2, ip                              |         __asm ("adc.w ip, r2, ip");
    0x0000621a adds r3, r6, r1                               |         r3 = r6 + r1;
    0x0000621c ldr r1, [sp, 0x2c]                            |         r1 = var_2ch;
    0x0000621e adc.w r2, ip, r7                              |         __asm ("adc.w r2, ip, r7");
    0x00006222 str r3, [sp, 0x18]                            |         var_18h = r3;
    0x00006224 mov r7, r2                                    |         r7 = r2;
    0x00006226 ldr r4, [sp, 8]                               |         r4 = var_8h;
    0x00006228 str r0, [sp, 0x38]                            |         var_38h = r0;
    0x0000622a lsrs r3, r1, 0x1c                             |         r3 = r1 >> 0x1c;
    0x0000622c lsls r5, r1, 0x1e                             |         r5 = r1 << 0x1e;
    0x0000622e orr.w r3, r3, r4, lsl 4                       |         r3 |= (r4 << 4);
    0x00006232 orr.w r5, r5, r4, lsr 2                       |         r5 |= (r4 >> 2);
    0x00006236 lsr.w sb, r4, 0x1c                            |         sb = r4 >> 0x1c;
    0x0000623a eors r3, r5                                   |         r3 ^= r5;
    0x0000623c lsls r5, r4, 0x1e                             |         r5 = r4 << 0x1e;
    0x0000623e orr.w sb, sb, r1, lsl 4                       |         sb |= (r1 << 4);
    0x00006242 orr.w r5, r5, r1, lsr 2                       |         r5 |= (r1 >> 2);
    0x00006246 eor.w sb, sb, r5                              |         sb ^= r5;
    0x0000624a lsls r5, r1, 0x19                             |         r5 = r1 << 0x19;
    0x0000624c orr.w r5, r5, r4, lsr 7                       |         r5 |= (r4 >> 7);
    0x00006250 eors r3, r5                                   |         r3 ^= r5;
    0x00006252 lsls r5, r4, 0x19                             |         r5 = r4 << 0x19;
    0x00006254 orr.w r5, r5, r1, lsr 7                       |         r5 |= (r1 >> 7);
    0x00006258 eor.w sb, sb, r5                              |         sb ^= r5;
    0x0000625c ldrd r5, r4, [sp, 0x20]                       |         __asm ("ldrd r5, r4, [var_24h]");
    0x00006260 orr.w r8, r4, r5                              |         r8 = r4 | r5;
    0x00006264 and.w r8, r8, r1                              |         r8 &= r1;
    0x00006268 ldr r1, [sp, 0x18]                            |         r1 = var_18h;
    0x0000626a lsrs r5, r1, 0xe                              |         r5 = r1 >> 0xe;
    0x0000626c orr.w r5, r5, r2, lsl 18                      |         r5 |= (r2 << 18);
    0x00006270 mov r4, r5                                    |         r4 = r5;
    0x00006272 lsrs r5, r1, 0x12                             |         r5 = r1 >> 0x12;
    0x00006274 orr.w r5, r5, r2, lsl 14                      |         r5 |= (r2 << 14);
    0x00006278 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x0000627a eors r5, r4                                   |         r5 ^= r4;
    0x0000627c str r5, [sp, 0x30]                            |         var_30h = r5;
    0x0000627e orr.w r5, lr, r2                              |         r5 = lr | r2;
    0x00006282 ldr r2, [sp, 8]                               |         r2 = var_8h;
    0x00006284 ands r5, r2                                   |         r5 &= r2;
    0x00006286 ldrd r2, r1, [sp, 0x20]                       |         __asm ("ldrd r2, r1, [var_24h]");
    0x0000628a ands r2, r1                                   |         r2 &= r1;
    0x0000628c ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x0000628e orr.w r8, r8, r2                              |         r8 |= r2;
    0x00006292 adds.w r3, r3, r8                             |         r3 += r8;
    0x00006296 lsr.w r8, r7, 0xe                             |         r8 = r7 >> 0xe;
    0x0000629a ldr r2, [r1, 0x20]                            |         r2 = *((r1 + 0x20));
    0x0000629c ldr r1, [sp, 0x18]                            |         r1 = var_18h;
    0x0000629e mov r4, r2                                    |         r4 = r2;
    0x000062a0 str r2, [sp, 0xe8]                            |         var_e8h = r2;
    0x000062a2 orr.w r8, r8, r1, lsl 18                      |         r8 |= (r1 << 18);
    0x000062a6 str.w r8, [sp, 0x10]                          |         __asm ("str.w r8, [var_10h]");
    0x000062aa lsr.w r8, r7, 0x12                            |         r8 = r7 >> 0x12;
    0x000062ae ldr r2, [sp, 0x10]                            |         r2 = var_10h;
    0x000062b0 orr.w r8, r8, r1, lsl 14                      |         r8 |= (r1 << 14);
    0x000062b4 eor.w r8, r2, r8                              |         r8 = r2 ^ r8;
    0x000062b8 ldr r2, [sp, 0x30]                            |         r2 = var_30h;
    0x000062ba str.w r8, [sp, 0x34]                          |         __asm ("str.w r8, [var_34h]");
    0x000062be lsl.w r8, r1, 0x17                            |         r8 = r1 << 0x17;
    0x000062c2 ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x000062c4 orr.w r8, r8, r7, lsr 9                       |         r8 |= (r7 >> 9);
    0x000062c8 eor.w r8, r2, r8                              |         r8 = r2 ^ r8;
    0x000062cc ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x000062ce and.w r2, lr, r2                              |         r2 = lr & r2;
    0x000062d2 orr.w r5, r5, r2                              |         r5 |= r2;
    0x000062d6 ldr r2, [sp, 0x18]                            |         r2 = var_18h;
    0x000062d8 adc.w r5, sb, r5                              |         __asm ("adc.w r5, sb, r5");
    0x000062dc adds r3, r3, r6                               |         r3 += r6;
    0x000062de adc.w r5, ip, r5                              |         __asm ("adc.w r5, ip, r5");
    0x000062e2 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x000062e4 mov r3, r5                                    |         r3 = r5;
    0x000062e6 ldr r5, [r1, 0x24]                            |         r5 = *((r1 + 0x24));
    0x000062e8 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x000062ea adds.w fp, fp, r4                             |         
    0x000062ee lsl.w r6, r7, 0x17                            |         r6 = r7 << 0x17;
    0x000062f2 ldr r4, [sp, 0x24]                            |         r4 = var_24h;
    0x000062f4 adc.w sb, sl, r5                              |         __asm ("adc.w sb, sl, r5");
    0x000062f8 str r5, [sp, 0xec]                            |         var_ech = r5;
    0x000062fa eor.w ip, r1, r0                              |         
    0x000062fe ldr r0, [sp, 0x28]                            |         r0 = var_28h;
    0x00006300 and.w ip, ip, r2                              |         
    0x00006304 ldr r5, [sp, 0x34]                            |         r5 = var_34h;
    0x00006306 eor.w ip, ip, r1                              |         
    0x0000630a ldr r1, [sp, 0x1c]                            |         r1 = var_1ch;
    0x0000630c orr.w r6, r6, r2, lsr 9                       |         r6 |= (r2 >> 9);
    0x00006310 adds.w ip, ip, fp                             |         
    0x00006314 eor.w sl, r0, r1                              |         sl = r0 ^ r1;
    0x00006318 eor.w r6, r6, r5                              |         r6 ^= r5;
    0x0000631c and.w sl, sl, r7                              |         sl &= r7;
    0x00006320 ldr r5, [sp, 0x58]                            |         r5 = var_58h;
    0x00006322 eor.w sl, sl, r0                              |         sl ^= r0;
    0x00006326 ldr r0, [sp, 0x10]                            |         r0 = var_10h;
    0x00006328 adc.w sl, sl, sb                              |         __asm ("adc.w sl, sl, sb");
    0x0000632c adds.w ip, r8, ip                             |         
    0x0000632e lsrs r4, r1, 0x10                             |         r4 = r1 >> 0x10;
    0x00006330 adc.w r8, r6, sl                              |         __asm ("adc.w r8, r6, sl");
    0x00006334 adds.w ip, ip, r5                             |         
    0x00006338 ldr r5, [sp, 0x5c]                            |         r5 = var_5ch;
    0x0000633a lsr.w r0, r0, 0x1c                            |         r0 >>= 0x1c;
    0x0000633e adc.w r8, r5, r8                              |         __asm ("adc.w r8, r5, r8");
    0x00006342 adds.w r5, r4, ip                             |         r5 = r4 + ip;
    0x00006346 mov r2, r5                                    |         r2 = r5;
    0x00006348 adc.w r5, lr, r8                              |         __asm ("adc.w r5, lr, r8");
    0x0000634c mov r1, r5                                    |         r1 = r5;
    0x0000634e orr.w r0, r0, r3, lsl 4                       |         r0 |= (r3 << 4);
    0x00006352 mov r5, r3                                    |         r5 = r3;
    0x00006354 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006356 lsr.w sb, r5, 0x1c                            |         sb = r5 >> 0x1c;
    0x0000635a lsr.w fp, r2, 0xe                             |         
    0x0000635e ldr r4, [sp, 0x10]                            |         r4 = var_10h;
    0x00006360 orr.w fp, fp, r1, lsl 18                      |         
    0x00006364 str r5, [sp, 0x30]                            |         var_30h = r5;
    0x00006366 lsls r6, r3, 0x1e                             |         r6 = r3 << 0x1e;
    0x00006368 orr.w sb, sb, r3, lsl 4                       |         sb |= (r3 << 4);
    0x0000636c orr.w r6, r6, r5, lsr 2                       |         r6 |= (r5 >> 2);
    0x00006370 eors r0, r6                                   |         r0 ^= r6;
    0x00006372 lsls r6, r5, 0x1e                             |         r6 = r5 << 0x1e;
    0x00006374 orr.w r6, r6, r3, lsr 2                       |         r6 |= (r3 >> 2);
    0x00006378 eor.w sb, sb, r6                              |         sb ^= r6;
    0x0000637c lsls r6, r3, 0x19                             |         r6 = r3 << 0x19;
    0x0000637e orr.w r6, r6, r5, lsr 7                       |         r6 |= (r5 >> 7);
    0x00006382 eors r0, r6                                   |         r0 ^= r6;
    0x00006384 lsls r6, r5, 0x19                             |         r6 = r5 << 0x19;
    0x00006386 orr.w r6, r6, r3, lsr 7                       |         r6 |= (r3 >> 7);
    0x0000638a ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x0000638c eor.w sb, sb, r6                              |         sb ^= r6;
    0x00006390 ldr r6, [sp, 0x20]                            |         r6 = var_20h;
    0x00006392 orr.w lr, r6, r3                              |         lr = r6 | r3;
    0x00006396 lsrs r6, r2, 0x12                             |         r6 = r2 >> 0x12;
    0x00006398 and.w lr, lr, r4                              |         lr &= r4;
    0x0000639c orr.w r6, r6, r1, lsl 14                      |         r6 |= (r1 << 14);
    0x000063a0 mov r4, r1                                    |         r4 = r1;
    0x000063a2 eor.w fp, fp, r6                              |         
    0x000063a6 ldrd r6, r1, [sp, 8]                          |         __asm ("ldrd r6, r1, [var_ch]");
    0x000063aa orrs r6, r1                                   |         r6 |= r1;
    0x000063ac ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x000063ae ands r6, r5                                   |         r6 &= r5;
    0x000063b0 and.w sl, r1, r3                              |         sl = r1 & r3;
    0x000063b4 orr.w lr, lr, sl                              |         lr |= sl;
    0x000063b8 lsr.w sl, r4, 0xe                             |         sl = r4 >> 0xe;
    0x000063bc adds.w r1, r0, lr                             |         r1 = r0 + lr;
    0x000063c0 lsr.w lr, r4, 0x12                            |         lr = r4 >> 0x12;
    0x000063c4 str r1, [sp, 0x24]                            |         var_24h = r1;
    0x000063c6 orr.w sl, sl, r2, lsl 18                      |         sl |= (r2 << 18);
    0x000063ca ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x000063cc orr.w lr, lr, r2, lsl 14                      |         lr |= (r2 << 14);
    0x000063d0 eor.w sl, sl, lr                              |         sl ^= lr;
    0x000063d4 lsl.w lr, r2, 0x17                            |         lr = r2 << 0x17;
    0x000063d8 ldr r5, [r1, 0x28]                            |         r5 = *((r1 + 0x28));
    0x000063da ldrd r0, r1, [sp, 8]                          |         __asm ("ldrd r0, r1, [var_ch]");
    0x000063de orr.w lr, lr, r4, lsr 9                       |         lr |= (r4 >> 9);
    0x000063e2 eor.w lr, fp, lr                              |         lr = fp ^ lr;
    0x000063e6 str r5, [sp, 0xf0]                            |         var_f0h = r5;
    0x000063e8 and.w fp, r1, r0                              |         
    0x000063ec ldr r1, [sp, 0x24]                            |         r1 = var_24h;
    0x000063ee orr.w r6, r6, fp                              |         r6 |= fp;
    0x000063f2 adc.w r6, sb, r6                              |         __asm ("adc.w r6, sb, r6");
    0x000063f6 adds.w r0, r1, ip                             |         r0 = r1 + ip;
    0x000063fa ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x000063fc adc.w r6, r8, r6                              |         __asm ("adc.w r6, r8, r6");
    0x00006400 lsl.w r8, r4, 0x17                            |         r8 = r4 << 0x17;
    0x00006404 str r6, [sp, 0x24]                            |         var_24h = r6;
    0x00006406 ldr r6, [sp, 0x14]                            |         r6 = var_14h;
    0x00006408 orr.w r8, r8, r2, lsr 9                       |         r8 |= (r2 >> 9);
    0x0000640c eor.w r8, sl, r8                              |         r8 = sl ^ r8;
    0x00006410 adds.w fp, r6, r5                             |         
    0x00006414 ldr r5, [r1, 0x2c]                            |         r5 = *((r1 + 0x2c));
    0x00006416 ldr r6, [sp, 0x28]                            |         r6 = var_28h;
    0x00006418 ldr r1, [sp, 0x18]                            |         r1 = var_18h;
    0x0000641a str r5, [sp, 0xf4]                            |         var_f4h = r5;
    0x0000641c adc.w sb, r6, r5                              |         __asm ("adc.w sb, r6, r5");
    0x00006420 ldr r6, [sp, 0x38]                            |         r6 = var_38h;
    0x00006422 mov r5, r4                                    |         r5 = r4;
    0x00006424 str r2, [sp, 0x28]                            |         var_28h = r2;
    0x00006426 str r5, [sp, 0x34]                            |         var_34h = r5;
    0x00006428 mov r4, r7                                    |         r4 = r7;
    0x0000642a eor.w ip, r6, r1                              |         
    0x0000642e ldr r1, [sp, 0x1c]                            |         r1 = var_1ch;
    0x00006430 and.w ip, ip, r2                              |         
    0x00006434 eor.w ip, ip, r6                              |         
    0x00006438 ldr r6, [sp, 0x24]                            |         r6 = var_24h;
    0x0000643a eor.w sl, r1, r7                              |         sl = r1 ^ r7;
    0x0000643e adds.w ip, ip, fp                             |         
    0x00006442 and.w sl, sl, r5                              |         sl &= r5;
    0x00006446 ldr r5, [sp, 0x60]                            |         r5 = var_60h;
    0x00006448 eor.w sl, sl, r1                              |         sl ^= r1;
    0x0000644c ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x0000644e adc.w sl, sl, sb                              |         __asm ("adc.w sl, sl, sb");
    0x00006452 adds.w ip, lr, ip                             |         
    0x00006456 adc.w lr, r8, sl                              |         __asm ("adc.w lr, r8, sl");
    0x0000645a adds.w ip, ip, r5                             |         
    0x0000645e ldr r5, [sp, 0x64]                            |         r5 = var_64h;
    0x00006460 lsl.w r7, r0, 0x1e                            |         r7 = r0 << 0x1e;
    0x00006464 lsr.w sb, r6, 0x1c                            |         sb = r6 >> 0x1c;
    0x00006468 orr.w r7, r7, r6, lsr 2                       |         r7 |= (r6 >> 2);
    0x0000646c adc.w lr, r5, lr                              |         __asm ("adc.w lr, r5, lr");
    0x00006470 orr.w sb, sb, r0, lsl 4                       |         sb |= (r0 << 4);
    0x00006474 adds.w r5, r1, ip                             |         r5 = r1 + ip;
    0x00006478 ldr r1, [sp, 0xc]                             |         r1 = var_ch;
    0x0000647a mov r2, r5                                    |         r2 = r5;
    0x0000647c lsr.w fp, r2, 0xe                             |         
    0x00006480 adc.w r5, r1, lr                              |         __asm ("adc.w r5, r1, lr");
    0x00006484 lsrs r1, r0, 0x1c                             |         r1 = r0 >> 0x1c;
    0x00006486 orr.w fp, fp, r5, lsl 18                      |         
    0x0000648a orr.w r1, r1, r6, lsl 4                       |         r1 |= (r6 << 4);
    0x0000648e eors r1, r7                                   |         r1 ^= r7;
    0x00006490 lsls r7, r6, 0x1e                             |         r7 = r6 << 0x1e;
    0x00006492 orr.w r7, r7, r0, lsr 2                       |         r7 |= (r0 >> 2);
    0x00006496 eor.w sb, sb, r7                              |         sb ^= r7;
    0x0000649a lsls r7, r0, 0x19                             |         r7 = r0 << 0x19;
    0x0000649c orr.w r7, r7, r6, lsr 7                       |         r7 |= (r6 >> 7);
    0x000064a0 eors r1, r7                                   |         r1 ^= r7;
    0x000064a2 lsls r7, r6, 0x19                             |         r7 = r6 << 0x19;
    0x000064a4 orr.w r7, r7, r0, lsr 7                       |         r7 |= (r0 >> 7);
    0x000064a8 eor.w sb, sb, r7                              |         sb ^= r7;
    0x000064ac mov r7, r3                                    |         r7 = r3;
    0x000064ae ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x000064b0 orr.w r8, r7, r3                              |         r8 = r7 | r3;
    0x000064b4 lsrs r7, r2, 0x12                             |         r7 = r2 >> 0x12;
    0x000064b6 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000064b8 and.w r8, r8, r0                              |         r8 &= r0;
    0x000064bc orr.w r7, r7, r5, lsl 14                      |         r7 |= (r5 << 14);
    0x000064c0 str r5, [sp, 0x20]                            |         var_20h = r5;
    0x000064c2 eor.w fp, fp, r7                              |         
    0x000064c6 ldr r7, [sp, 8]                               |         r7 = var_8h;
    0x000064c8 orrs r7, r3                                   |         r7 |= r3;
    0x000064ca ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x000064cc ands r7, r6                                   |         r7 &= r6;
    0x000064ce ldr r6, [sp, 0x10]                            |         r6 = var_10h;
    0x000064d0 and.w sl, r3, r6                              |         sl = r3 & r6;
    0x000064d4 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x000064d6 orr.w r8, r8, sl                              |         r8 |= sl;
    0x000064da lsr.w sl, r5, 0xe                             |         sl = r5 >> 0xe;
    0x000064de adds.w r3, r1, r8                             |         r3 = r1 + r8;
    0x000064e2 lsr.w r8, r5, 0x12                            |         r8 = r5 >> 0x12;
    0x000064e6 orr.w sl, sl, r2, lsl 18                      |         sl |= (r2 << 18);
    0x000064ea str r3, [sp, 0xc]                             |         var_ch = r3;
    0x000064ec orr.w r8, r8, r2, lsl 14                      |         r8 |= (r2 << 14);
    0x000064f0 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000064f2 ldr r1, [sp, 8]                               |         r1 = var_8h;
    0x000064f4 eor.w sl, sl, r8                              |         sl ^= r8;
    0x000064f8 lsl.w r8, r2, 0x17                            |         r8 = r2 << 0x17;
    0x000064fc ldr r6, [r6, 0x30]                            |         r6 = *((r6 + 0x30));
    0x000064fe orr.w r8, r8, r5, lsr 9                       |         r8 |= (r5 >> 9);
    0x00006502 eor.w r8, fp, r8                              |         r8 = fp ^ r8;
    0x00006506 and.w fp, r1, r3                              |         
    0x0000650a ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x0000650c orr.w r7, r7, fp                              |         r7 |= fp;
    0x00006510 adc.w r7, sb, r7                              |         __asm ("adc.w r7, sb, r7");
    0x00006514 str r6, [sp, 0xf8]                            |         var_f8h = r6;
    0x00006516 adds.w r1, r3, ip                             |         r1 = r3 + ip;
    0x0000651a lsl.w ip, r5, 0x17                            |         
    0x0000651e adc.w lr, lr, r7                              |         __asm ("adc.w lr, lr, r7");
    0x00006522 ldr r7, [sp, 0x38]                            |         r7 = var_38h;
    0x00006524 mov r3, r2                                    |         r3 = r2;
    0x00006526 orr.w ip, ip, r2, lsr 9                       |         
    0x0000652a ldr r2, [sp, 0x28]                            |         r2 = var_28h;
    0x0000652c adds.w fp, r7, r6                             |         
    0x00006530 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00006532 eor.w ip, sl, ip                              |         
    0x00006536 str r3, [sp, 0xc]                             |         var_ch = r3;
    0x00006538 ldr r7, [r6, 0x34]                            |         r7 = *((r6 + 0x34));
    0x0000653a mov r6, r7                                    |         r6 = r7;
    0x0000653c str r7, [sp, 0xfc]                            |         var_fch = r7;
    0x0000653e ldr r7, [sp, 0x1c]                            |         r7 = var_1ch;
    0x00006540 str r4, [sp, 0x1c]                            |         var_1ch = r4;
    0x00006542 adc.w sb, r7, r6                              |         __asm ("adc.w sb, r7, r6");
    0x00006546 ldr r6, [sp, 0x18]                            |         r6 = var_18h;
    0x00006548 mov r7, r6                                    |         r7 = r6;
    0x0000654a eors r7, r2                                   |         r7 ^= r2;
    0x0000654c ldr r2, [sp, 0x34]                            |         r2 = var_34h;
    0x0000654e ands r7, r3                                   |         r7 &= r3;
    0x00006550 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006552 eors r7, r6                                   |         r7 ^= r6;
    0x00006554 eor.w sl, r4, r2                              |         sl = r4 ^ r2;
    0x00006558 adds.w r7, r7, fp                             |         r7 += fp;
    0x0000655c and.w sl, sl, r5                              |         sl &= r5;
    0x00006560 ldr r5, [sp, 0x68]                            |         r5 = var_68h;
    0x00006562 eor.w sl, sl, r4                              |         sl ^= r4;
    0x00006566 ldr r2, [sp, 0x2c]                            |         r2 = var_2ch;
    0x00006568 adc.w sl, sl, sb                              |         __asm ("adc.w sl, sl, sb");
    0x0000656c adds.w r7, r8, r7                             |         r7 = r8 + r7;
    0x00006570 adc.w ip, ip, sl                              |         __asm ("adc.w ip, ip, sl");
    0x00006574 adds r7, r7, r5                               |         r7 += r5;
    0x00006576 ldr r5, [sp, 0x6c]                            |         r5 = var_6ch;
    0x00006578 lsr.w sl, lr, 0x1c                            |         sl = lr >> 0x1c;
    0x0000657a ldrb r6, [r3, 8]                              |         r6 = *((r3 + 8));
    0x0000657c orr.w sl, sl, r1, lsl 4                       |         sl |= (r1 << 4);
    0x00006580 adc.w ip, r5, ip                              |         __asm ("adc.w ip, r5, ip");
    0x00006584 adds r5, r2, r7                               |         r5 = r2 + r7;
    0x00006586 lsr.w r2, r1, 0x1c                            |         r2 = r1 >> 0x1c;
    0x0000658a adc.w r4, r3, ip                              |         __asm ("adc.w r4, r3, ip");
    0x0000658e ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006590 mov r6, r4                                    |         r6 = r4;
    0x00006592 lsls r4, r1, 0x1e                             |         r4 = r1 << 0x1e;
    0x00006594 orr.w r2, r2, lr, lsl 4                       |         r2 |= (lr << 4);
    0x00006598 lsr.w r8, r5, 0xe                             |         r8 = r5 >> 0xe;
    0x0000659c orr.w r4, r4, lr, lsr 2                       |         r4 |= (lr >> 2);
    0x000065a0 str r6, [sp, 0x14]                            |         var_14h = r6;
    0x000065a2 orr.w sb, r3, r0                              |         sb = r3 | r0;
    0x000065a6 orr.w r8, r8, r6, lsl 18                      |         r8 |= (r6 << 18);
    0x000065aa eors r2, r4                                   |         r2 ^= r4;
    0x000065ac lsl.w r4, lr, 0x1e                            |         r4 = lr << 0x1e;
    0x000065b0 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000065b2 and.w sb, sb, r1                              |         sb &= r1;
    0x000065b6 orr.w r4, r4, r1, lsr 2                       |         r4 |= (r1 >> 2);
    0x000065ba eor.w sl, sl, r4                              |         sl ^= r4;
    0x000065be lsls r4, r1, 0x19                             |         r4 = r1 << 0x19;
    0x000065c0 orr.w r4, r4, lr, lsr 7                       |         r4 |= (lr >> 7);
    0x000065c4 eors r2, r4                                   |         r2 ^= r4;
    0x000065c6 lsl.w r4, lr, 0x19                            |         r4 = lr << 0x19;
    0x000065ca orr.w r4, r4, r1, lsr 7                       |         r4 |= (r1 >> 7);
    0x000065ce eor.w sl, sl, r4                              |         sl ^= r4;
    0x000065d2 lsrs r4, r5, 0x12                             |         r4 = r5 >> 0x12;
    0x000065d4 orr.w r4, r4, r6, lsl 14                      |         r4 |= (r6 << 14);
    0x000065d8 ldr r6, [sp, 0x24]                            |         r6 = var_24h;
    0x000065da eor.w r8, r8, r4                              |         r8 ^= r4;
    0x000065de orr.w r4, r3, r6                              |         r4 = r3 | r6;
    0x000065e2 ldr r6, [sp, 0x10]                            |         r6 = var_10h;
    0x000065e4 and.w r4, r4, lr                              |         r4 &= lr;
    0x000065e8 and.w fp, r6, r0                              |         
    0x000065ec ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x000065ee orr.w sb, sb, fp                              |         sb |= fp;
    0x000065f2 adds.w r2, r2, sb                             |         r2 += sb;
    0x000065f6 ldr r6, [r6, 0x38]                            |         r6 = *((r6 + 0x38));
    0x000065f8 str r6, [sp, 0x58]                            |         var_58h = r6;
    0x000065fa ldr r6, [sp, 0x14]                            |         r6 = var_14h;
    0x000065fc lsr.w sb, r6, 0xe                             |         sb = r6 >> 0xe;
    0x00006600 lsr.w fp, r6, 0x12                            |         
    0x00006604 orr.w sb, sb, r5, lsl 18                      |         sb |= (r5 << 18);
    0x00006608 orr.w fp, fp, r5, lsl 14                      |         
    0x0000660c eor.w sb, sb, fp                              |         sb ^= fp;
    0x00006610 lsl.w fp, r5, 0x17                            |         
    0x00006614 orr.w fp, fp, r6, lsr 9                       |         
    0x00006618 ldr r6, [sp, 0x24]                            |         r6 = var_24h;
    0x0000661a eor.w r8, r8, fp                              |         r8 ^= fp;
    0x0000661e and.w fp, r3, r6                              |         
    0x00006622 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00006624 orr.w r4, r4, fp                              |         r4 |= fp;
    0x00006628 adc.w r4, sl, r4                              |         __asm ("adc.w r4, sl, r4");
    0x0000662c adds r3, r2, r7                               |         r3 = r2 + r7;
    0x0000662e adc.w r2, ip, r4                              |         __asm ("adc.w r2, ip, r4");
    0x00006632 str r3, [sp, 8]                               |         var_8h = r3;
    0x00006634 ldr r7, [sp, 0x18]                            |         r7 = var_18h;
    0x00006636 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00006638 ldr r4, [sp, 0x58]                            |         r4 = var_58h;
    0x0000663a adds.w fp, r7, r4                             |         
    0x0000663e ldr r4, [r6, 0x3c]                            |         r4 = *((r6 + 0x3c));
    0x00006640 ldr r7, [sp, 0x1c]                            |         r7 = var_1ch;
    0x00006642 lsl.w ip, r3, 0x17                            |         
    0x00006646 ldr r6, [sp, 0x28]                            |         r6 = var_28h;
    0x00006648 orr.w ip, ip, r5, lsr 9                       |         
    0x0000664c str r4, [sp, 0x68]                            |         var_68h = r4;
    0x0000664e adc.w sl, r7, r4                              |         __asm ("adc.w sl, r7, r4");
    0x00006652 mov r4, r5                                    |         r4 = r5;
    0x00006654 ldr r5, [sp, 0xc]                             |         r5 = var_ch;
    0x00006656 mov r7, r6                                    |         r7 = r6;
    0x00006658 eor.w ip, sb, ip                              |         
    0x0000665c str r4, [sp, 0x2c]                            |         var_2ch = r4;
    0x0000665e eors r7, r5                                   |         r7 ^= r5;
    0x00006660 ldr r5, [sp, 0x20]                            |         r5 = var_20h;
    0x00006662 ands r7, r4                                   |         r7 &= r4;
    0x00006664 ldr r4, [sp, 0x70]                            |         r4 = var_70h;
    0x00006666 eors r7, r6                                   |         r7 ^= r6;
    0x00006668 ldr r6, [sp, 0x34]                            |         r6 = var_34h;
    0x0000666a adds.w r7, r7, fp                             |         r7 += fp;
    0x0000666e and.w fp, r0, r1                              |         
    0x00006672 eor.w sb, r6, r5                              |         sb = r6 ^ r5;
    0x00006676 and.w sb, sb, r3                              |         sb &= r3;
    0x0000667a ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x0000667c eor.w sb, sb, r6                              |         sb ^= r6;
    0x00006680 ldr r6, [sp, 8]                               |         r6 = var_8h;
    0x00006682 adc.w sb, sb, sl                              |         __asm ("adc.w sb, sb, sl");
    0x00006686 adds.w r7, r8, r7                             |         r7 = r8 + r7;
    0x0000668a adc.w ip, ip, sb                              |         __asm ("adc.w ip, ip, sb");
    0x0000668e adds r7, r7, r4                               |         r7 += r4;
    0x00006690 ldr r4, [sp, 0x74]                            |         r4 = var_74h;
    0x00006692 lsr.w sl, r2, 0x1c                            |         sl = r2 >> 0x1c;
    0x00006696 orr.w sb, r0, r1                              |         sb = r0 | r1;
    0x0000669a and.w sb, sb, r6                              |         sb &= r6;
    0x0000669e adc.w ip, r4, ip                              |         __asm ("adc.w ip, r4, ip");
    0x000066a2 adds r3, r3, r7                               |         r3 += r7;
    0x000066a4 mov r5, r3                                    |         r5 = r3;
    0x000066a6 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000066a8 orr.w sb, sb, fp                              |         sb |= fp;
    0x000066ac adc.w r4, r3, ip                              |         __asm ("adc.w r4, r3, ip");
    0x000066b0 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x000066b2 lsr.w fp, r4, 0x12                            |         
    0x000066b6 lsr.w r8, r3, 0x1c                            |         r8 = r3 >> 0x1c;
    0x000066ba lsls r3, r3, 0x1e                             |         r3 <<= 0x1e;
    0x000066bc orr.w r8, r8, r2, lsl 4                       |         r8 |= (r2 << 4);
    0x000066c0 orr.w r3, r3, r2, lsr 2                       |         r3 |= (r2 >> 2);
    0x000066c4 eor.w r8, r8, r3                              |         r8 ^= r3;
    0x000066c8 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x000066ca orr.w sl, sl, r3, lsl 4                       |         sl |= (r3 << 4);
    0x000066ce lsls r3, r2, 0x1e                             |         r3 = r2 << 0x1e;
    0x000066d0 orr.w r3, r3, r6, lsr 2                       |         r3 |= (r6 >> 2);
    0x000066d4 eor.w sl, sl, r3                              |         sl ^= r3;
    0x000066d8 lsls r3, r6, 0x19                             |         r3 = r6 << 0x19;
    0x000066da orr.w r3, r3, r2, lsr 7                       |         r3 |= (r2 >> 7);
    0x000066de eor.w r8, r8, r3                              |         r8 ^= r3;
    0x000066e2 lsls r3, r2, 0x19                             |         r3 = r2 << 0x19;
    0x000066e4 adds.w r8, r8, sb                             |         r8 += sb;
    0x000066e8 lsr.w sb, r4, 0xe                             |         sb = r4 >> 0xe;
    0x000066ec orr.w r3, r3, r6, lsr 7                       |         r3 |= (r6 >> 7);
    0x000066f0 ldr r6, [sp, 0x24]                            |         r6 = var_24h;
    0x000066f2 eor.w sl, sl, r3                              |         sl ^= r3;
    0x000066f6 mov r3, r5                                    |         r3 = r5;
    0x000066f8 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x000066fa lsr.w r5, r5, 0xe                             |         r5 >>= 0xe;
    0x000066fe lsr.w r3, r3, 0x12                            |         r3 >>= 0x12;
    0x00006702 orr.w r5, r5, r4, lsl 18                      |         r5 |= (r4 << 18);
    0x00006706 orr.w r3, r3, r4, lsl 14                      |         r3 |= (r4 << 14);
    0x0000670a eor.w r5, r5, r3                              |         r5 ^= r3;
    0x0000670e orr.w r3, r6, lr                              |         r3 = r6 | lr;
    0x00006712 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00006714 and.w r3, r3, r2                              |         r3 &= r2;
    0x00006718 ldr r6, [r6, 0x40]                            |         r6 = *((r6 + 0x40));
    0x0000671a str r6, [sp, 0x84]                            |         var_84h = r6;
    0x0000671c ldr r6, [sp, 0x10]                            |         r6 = var_10h;
    0x0000671e orr.w fp, fp, r6, lsl 14                      |         
    0x00006722 orr.w sb, sb, r6, lsl 18                      |         sb |= (r6 << 18);
    0x00006726 eor.w sb, sb, fp                              |         sb ^= fp;
    0x0000672a lsl.w fp, r6, 0x17                            |         
    0x0000672e ldr r6, [sp, 0x24]                            |         r6 = var_24h;
    0x00006730 orr.w fp, fp, r4, lsr 9                       |         
    0x00006734 eor.w r5, r5, fp                              |         r5 ^= fp;
    0x00006738 and.w fp, r6, lr                              |         
    0x0000673c orr.w r3, r3, fp                              |         r3 |= fp;
    0x00006740 adc.w r3, sl, r3                              |         __asm ("adc.w r3, sl, r3");
    0x00006744 adds.w r8, r8, r7                             |         r8 += r7;
    0x00006748 adc.w r7, ip, r3                              |         __asm ("adc.w r7, ip, r3");
    0x0000674c lsl.w ip, r4, 0x17                            |         
    0x00006750 str r7, [sp, 0x18]                            |         var_18h = r7;
    0x00006752 ldr r7, [sp, 0x28]                            |         r7 = var_28h;
    0x00006754 ldr r3, [sp, 0x84]                            |         r3 = var_84h;
    0x00006756 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00006758 str r4, [sp, 0x30]                            |         var_30h = r4;
    0x0000675a adds.w fp, r7, r3                             |         
    0x0000675e ldr r7, [r6, 0x44]                            |         r7 = *((r6 + 0x44));
    0x00006760 ldr r6, [sp, 0x10]                            |         r6 = var_10h;
    0x00006762 mov r3, r7                                    |         r3 = r7;
    0x00006764 str r7, [sp, 0x100]                           |         var_100h = r7;
    0x00006766 ldr r7, [sp, 0x34]                            |         r7 = var_34h;
    0x00006768 orr.w ip, ip, r6, lsr 9                       |         
    0x0000676c str r2, [sp, 0x34]                            |         var_34h = r2;
    0x0000676e adc.w sl, r7, r3                              |         __asm ("adc.w sl, r7, r3");
    0x00006772 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00006774 ldr r7, [sp, 0x2c]                            |         r7 = var_2ch;
    0x00006776 eor.w ip, sb, ip                              |         
    0x0000677a eors r7, r3                                   |         r7 ^= r3;
    0x0000677c ands r7, r6                                   |         r7 &= r6;
    0x0000677e ldr r6, [sp, 0x20]                            |         r6 = var_20h;
    0x00006780 eors r7, r3                                   |         r7 ^= r3;
    0x00006782 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00006784 adds.w r7, r7, fp                             |         r7 += fp;
    0x00006788 eor.w sb, r6, r3                              |         sb = r6 ^ r3;
    0x0000678c and.w sb, sb, r4                              |         sb &= r4;
    0x00006790 ldr r4, [sp, 0x18]                            |         r4 = var_18h;
    0x00006792 eor.w sb, sb, r6                              |         sb ^= r6;
    0x00006796 ldr r6, [sp, 0x24]                            |         r6 = var_24h;
    0x00006798 adc.w sb, sb, sl                              |         __asm ("adc.w sb, sb, sl");
    0x0000679c adds r5, r5, r7                               |         r5 += r7;
    0x0000679e ldr r7, [sp, 0x78]                            |         r7 = var_78h;
    0x000067a0 adc.w ip, ip, sb                              |         __asm ("adc.w ip, ip, sb");
    0x000067a4 lsr.w sl, r4, 0x1c                            |         sl = r4 >> 0x1c;
    0x000067a8 adds r5, r5, r7                               |         r5 += r7;
    0x000067aa ldr r7, [sp, 0x7c]                            |         r7 = var_7ch;
    0x000067ac orr.w sl, sl, r8, lsl 4                       |         sl |= (r8 << 4);
    0x000067b0 adc.w ip, r7, ip                              |         __asm ("adc.w ip, r7, ip");
    0x000067b4 adds r0, r0, r5                               |         r0 += r5;
    0x000067b6 mov r7, r0                                    |         r7 = r0;
    0x000067b8 adc.w r0, r6, ip                              |         __asm ("adc.w r0, r6, ip");
    0x000067bc mov r3, r0                                    |         r3 = r0;
    0x000067be lsl.w r6, r8, 0x1e                            |         r6 = r8 << 0x1e;
    0x000067c2 lsr.w r0, r8, 0x1c                            |         r0 = r8 >> 0x1c;
    0x000067c6 str r3, [sp, 0x1c]                            |         var_1ch = r3;
    0x000067c8 orr.w r6, r6, r4, lsr 2                       |         r6 |= (r4 >> 2);
    0x000067cc orr.w r0, r0, r4, lsl 4                       |         r0 |= (r4 << 4);
    0x000067d0 eors r0, r6                                   |         r0 ^= r6;
    0x000067d2 lsls r6, r4, 0x1e                             |         r6 = r4 << 0x1e;
    0x000067d4 orr.w r6, r6, r8, lsr 2                       |         r6 |= (r8 >> 2);
    0x000067d8 eor.w sl, sl, r6                              |         sl ^= r6;
    0x000067dc lsl.w r6, r8, 0x19                            |         r6 = r8 << 0x19;
    0x000067e0 orr.w r6, r6, r4, lsr 7                       |         r6 |= (r4 >> 7);
    0x000067e4 eors r0, r6                                   |         r0 ^= r6;
    0x000067e6 lsls r6, r4, 0x19                             |         r6 = r4 << 0x19;
    0x000067e8 ldr r4, [sp, 8]                               |         r4 = var_8h;
    0x000067ea orr.w r6, r6, r8, lsr 7                       |         r6 |= (r8 >> 7);
    0x000067ee orr.w sb, r1, r4                              |         sb = r1 | r4;
    0x000067f2 eor.w sl, sl, r6                              |         sl ^= r6;
    0x000067f6 mov r4, r7                                    |         r4 = r7;
    0x000067f8 lsrs r6, r7, 0xe                              |         r6 = r7 >> 0xe;
    0x000067fa lsrs r7, r7, 0x12                             |         r7 >>= 0x12;
    0x000067fc and.w sb, sb, r8                              |         sb &= r8;
    0x00006800 orr.w r6, r6, r3, lsl 18                      |         r6 |= (r3 << 18);
    0x00006804 orr.w r7, r7, r3, lsl 14                      |         r7 |= (r3 << 14);
    0x00006808 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x0000680a eors r6, r7                                   |         r6 ^= r7;
    0x0000680c orr.w r7, lr, r2                              |         r7 = lr | r2;
    0x00006810 and.w fp, r1, r3                              |         
    0x00006814 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006816 orr.w sb, sb, fp                              |         sb |= fp;
    0x0000681a ldr r2, [sp, 0x18]                            |         r2 = var_18h;
    0x0000681c adds.w r0, r0, sb                             |         r0 += sb;
    0x00006820 ldr r3, [r3, 0x48]                            |         r3 = *((r3 + 0x48));
    0x00006822 and.w r7, r7, r2                              |         r7 &= r2;
    0x00006826 ldr r2, [sp, 0x34]                            |         r2 = var_34h;
    0x00006828 str r3, [sp, 0x6c]                            |         var_6ch = r3;
    0x0000682a ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x0000682c lsr.w sb, r3, 0xe                             |         sb = r3 >> 0xe;
    0x00006830 lsr.w fp, r3, 0x12                            |         
    0x00006834 orr.w sb, sb, r4, lsl 18                      |         sb |= (r4 << 18);
    0x00006838 orr.w fp, fp, r4, lsl 14                      |         
    0x0000683c eor.w sb, sb, fp                              |         sb ^= fp;
    0x00006840 lsl.w fp, r4, 0x17                            |         
    0x00006844 orr.w fp, fp, r3, lsr 9                       |         
    0x00006848 eor.w r6, r6, fp                              |         r6 ^= fp;
    0x0000684c and.w fp, lr, r2                              |         
    0x00006850 orr.w r7, r7, fp                              |         r7 |= fp;
    0x00006854 adc.w r7, sl, r7                              |         __asm ("adc.w r7, sl, r7");
    0x00006858 adds r3, r0, r5                               |         r3 = r0 + r5;
    0x0000685a str r3, [sp, 0x38]                            |         var_38h = r3;
    0x0000685c adc.w ip, ip, r7                              |         __asm ("adc.w ip, ip, r7");
    0x00006860 ldr r0, [sp, 0x6c]                            |         r0 = var_6ch;
    0x00006862 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006864 ldr r5, [sp, 0xc]                             |         r5 = var_ch;
    0x00006866 adds.w fp, r5, r0                             |         
    0x0000686a ldr r0, [r3, 0x4c]                            |         r0 = *((r3 + 0x4c));
    0x0000686c str r0, [sp, 0x88]                            |         var_88h = r0;
    0x0000686e ldr r5, [sp, 0x20]                            |         r5 = var_20h;
    0x00006870 ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00006872 adc.w sl, r5, r0                              |         __asm ("adc.w sl, r5, r0");
    0x00006874 lsrs r0, r0, 8                                |         r0 >>= 8;
    0x00006876 ldr r5, [sp, 0x1c]                            |         r5 = var_1ch;
    0x00006878 mov r0, r4                                    |         r0 = r4;
    0x0000687a str r0, [sp, 0x24]                            |         var_24h = r0;
    0x0000687c lsls r7, r5, 0x17                             |         r7 = r5 << 0x17;
    0x0000687e mov r5, r3                                    |         r5 = r3;
    0x00006880 orr.w r7, r7, r4, lsr 9                       |         r7 |= (r4 >> 9);
    0x00006884 ldr r4, [sp, 0x10]                            |         r4 = var_10h;
    0x00006886 eor.w r7, sb, r7                              |         r7 = sb ^ r7;
    0x0000688a eors r5, r4                                   |         r5 ^= r4;
    0x0000688c ldr r4, [sp, 0x30]                            |         r4 = var_30h;
    0x0000688e ands r5, r0                                   |         r5 &= r0;
    0x00006890 ldr r0, [sp, 0x80]                            |         r0 = var_80h;
    0x00006892 eors r5, r3                                   |         r5 ^= r3;
    0x00006894 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00006896 adds.w r5, r5, fp                             |         r5 += fp;
    0x0000689a eor.w sb, r3, r4                              |         sb = r3 ^ r4;
    0x0000689e ldr r4, [sp, 0x1c]                            |         r4 = var_1ch;
    0x000068a0 and.w sb, sb, r4                              |         sb &= r4;
    0x000068a4 eor.w sb, sb, r3                              |         sb ^= r3;
    0x000068a8 adc.w sb, sb, sl                              |         __asm ("adc.w sb, sb, sl");
    0x000068ac adds r6, r6, r5                               |         r6 += r5;
    0x000068ae adc.w r7, r7, sb                              |         __asm ("adc.w r7, r7, sb");
    0x000068b2 adds r3, r6, r0                               |         r3 = r6 + r0;
    0x000068b4 ldr r0, [sp, 0x8c]                            |         r0 = var_8ch;
    0x000068b6 lsr.w sl, ip, 0x1c                            |         sl = ip >> 0x1c;
    0x000068ba str r3, [sp, 0xc]                             |         var_ch = r3;
    0x000068bc mov r6, r2                                    |         r6 = r2;
    0x000068be ldr r2, [sp, 0x18]                            |         r2 = var_18h;
    0x000068c0 adc.w r7, r0, r7                              |         __asm ("adc.w r7, r0, r7");
    0x000068c4 adds r1, r1, r3                               |         r1 += r3;
    0x000068c6 ldr r3, [sp, 0x38]                            |         r3 = var_38h;
    0x000068c8 mov r4, r1                                    |         r4 = r1;
    0x000068ca adc.w r0, lr, r7                              |         __asm ("adc.w r0, lr, r7");
    0x000068ce lsr.w lr, r4, 0x12                            |         lr = r4 >> 0x12;
    0x000068d2 orr.w lr, lr, r0, lsl 14                      |         lr |= (r0 << 14);
    0x000068d6 lsrs r5, r3, 0x1c                             |         r5 = r3 >> 0x1c;
    0x000068d8 lsls r1, r3, 0x1e                             |         r1 = r3 << 0x1e;
    0x000068da orr.w sl, sl, r3, lsl 4                       |         sl |= (r3 << 4);
    0x000068de orr.w r1, r1, ip, lsr 2                       |         r1 |= (ip >> 2);
    0x000068e2 orr.w r5, r5, ip, lsl 4                       |         r5 |= (ip << 4);
    0x000068e6 eors r5, r1                                   |         r5 ^= r1;
    0x000068e8 lsl.w r1, ip, 0x1e                            |         r1 = ip << 0x1e;
    0x000068ec orr.w r1, r1, r3, lsr 2                       |         r1 |= (r3 >> 2);
    0x000068f0 eor.w sl, sl, r1                              |         sl ^= r1;
    0x000068f4 lsls r1, r3, 0x19                             |         r1 = r3 << 0x19;
    0x000068f6 orr.w r1, r1, ip, lsr 7                       |         r1 |= (ip >> 7);
    0x000068fa eors r5, r1                                   |         r5 ^= r1;
    0x000068fc lsl.w r1, ip, 0x19                            |         r1 = ip << 0x19;
    0x00006900 orr.w r1, r1, r3, lsr 7                       |         r1 |= (r3 >> 7);
    0x00006904 eor.w sl, sl, r1                              |         sl ^= r1;
    0x00006908 ldr r1, [sp, 8]                               |         r1 = var_8h;
    0x0000690a orr.w sb, r1, r8                              |         sb = r1 | r8;
    0x0000690e lsrs r1, r4, 0xe                              |         r1 = r4 >> 0xe;
    0x00006910 and.w sb, sb, r3                              |         sb &= r3;
    0x00006914 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006916 orr.w r1, r1, r0, lsl 18                      |         r1 |= (r0 << 18);
    0x0000691a and.w fp, r3, r8                              |         
    0x0000691e ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006920 orr.w sb, sb, fp                              |         sb |= fp;
    0x00006924 lsr.w fp, r0, 0x12                            |         
    0x00006928 adds.w r5, r5, sb                             |         r5 += sb;
    0x0000692c lsr.w sb, r0, 0xe                             |         sb = r0 >> 0xe;
    0x00006930 orr.w fp, fp, r4, lsl 14                      |         
    0x00006934 eor.w r1, r1, lr                              |         r1 ^= lr;
    0x00006938 orr.w sb, sb, r4, lsl 18                      |         sb |= (r4 << 18);
    0x0000693c orr.w lr, r6, r2                              |         lr = r6 | r2;
    0x00006940 ldr r3, [r3, 0x50]                            |         r3 = *((r3 + 0x50));
    0x00006942 and.w lr, lr, ip                              |         lr &= ip;
    0x00006946 eor.w sb, sb, fp                              |         sb ^= fp;
    0x0000694a lsl.w fp, r4, 0x17                            |         
    0x0000694e orr.w fp, fp, r0, lsr 9                       |         
    0x00006952 str r3, [sp, 0x8c]                            |         var_8ch = r3;
    0x00006954 eor.w r1, r1, fp                              |         r1 ^= fp;
    0x00006958 and.w fp, r6, r2                              |         
    0x0000695c ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x0000695e orr.w lr, lr, fp                              |         lr |= fp;
    0x00006962 ldr r6, [sp, 0x2c]                            |         r6 = var_2ch;
    0x00006964 adc.w lr, sl, lr                              |         __asm ("adc.w lr, sl, lr");
    0x00006968 str r0, [sp, 0x2c]                            |         var_2ch = r0;
    0x0000696a adds r5, r5, r2                               |         r5 += r2;
    0x0000696c adc.w r2, r7, lr                              |         __asm ("adc.w r2, r7, lr");
    0x00006970 adds r6, r6, r3                               |         r6 += r3;
    0x00006972 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006974 lsl.w lr, r0, 0x17                            |         lr = r0 << 0x17;
    0x00006978 str r5, [sp, 0x28]                            |         var_28h = r5;
    0x0000697a orr.w lr, lr, r4, lsr 9                       |         lr |= (r4 >> 9);
    0x0000697e str r2, [sp, 0xc]                             |         var_ch = r2;
    0x00006980 ldr r5, [r3, 0x54]                            |         r5 = *((r3 + 0x54));
    0x00006982 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00006984 eor.w sb, sb, lr                              |         sb ^= lr;
    0x00006988 str r5, [sp, 0x90]                            |         var_90h = r5;
    0x0000698a adc.w sl, r3, r5                              |         __asm ("adc.w sl, r3, r5");
    0x0000698e ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006990 mov r5, r4                                    |         r5 = r4;
    0x00006992 ldr r4, [sp, 0x24]                            |         r4 = var_24h;
    0x00006994 str r5, [sp, 0x3c]                            |         var_3ch = r5;
    0x00006996 eor.w lr, r3, r4                              |         lr = r3 ^ r4;
    0x0000699a ldr r4, [sp, 0x30]                            |         r4 = var_30h;
    0x0000699c and.w lr, lr, r5                              |         lr &= r5;
    0x000069a0 eor.w lr, lr, r3                              |         lr ^= r3;
    0x000069a4 adds.w lr, lr, r6                             |         lr += r6;
    0x000069a8 ldr r6, [sp, 0x1c]                            |         r6 = var_1ch;
    0x000069aa ldr r5, [sp, 0x94]                            |         r5 = var_94h;
    0x000069ac ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x000069ae eor.w r6, r4, r6                              |         r6 = r4 ^ r6;
    0x000069b2 ldr r7, [sp, 0xc]                             |         r7 = var_ch;
    0x000069b4 and.w r6, r6, r0                              |         r6 &= r0;
    0x000069b8 eor.w r6, r6, r4                              |         r6 ^= r4;
    0x000069bc adc.w r6, r6, sl                              |         __asm ("adc.w r6, r6, sl");
    0x000069c0 adds.w lr, lr, r1                             |         lr += r1;
    0x000069c4 adc.w r6, r6, sb                              |         __asm ("adc.w r6, r6, sb");
    0x000069c8 adds.w lr, lr, r5                             |         lr += r5;
    0x000069cc ldr r5, [sp, 0x98]                            |         r5 = var_98h;
    0x000069ce ldr r1, [sp, 0x34]                            |         r1 = var_34h;
    0x000069d0 adc.w r6, r5, r6                              |         __asm ("adc.w r6, r5, r6");
    0x000069d4 ldr r5, [sp, 0x28]                            |         r5 = var_28h;
    0x000069d6 adds.w r2, r3, lr                             |         r2 = r3 + lr;
    0x000069da mov r0, r2                                    |         r0 = r2;
    0x000069dc adc.w r2, r1, r6                              |         __asm ("adc.w r2, r1, r6");
    0x000069e0 mov r3, r2                                    |         r3 = r2;
    0x000069e2 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x000069e4 ldr r1, [sp, 0xc]                             |         r1 = var_ch;
    0x000069e6 lsrs r4, r5, 0x1c                             |         r4 = r5 >> 0x1c;
    0x000069e8 lsr.w sb, r0, 0xe                             |         sb = r0 >> 0xe;
    0x000069ec str r3, [sp, 0x20]                            |         var_20h = r3;
    0x000069ee orr.w r4, r4, r2, lsl 4                       |         r4 |= (r2 << 4);
    0x000069f2 lsls r2, r5, 0x1e                             |         r2 = r5 << 0x1e;
    0x000069f4 orr.w sb, sb, r3, lsl 18                      |         sb |= (r3 << 18);
    0x000069f8 orr.w r2, r2, r1, lsr 2                       |         r2 |= (r1 >> 2);
    0x000069fc eors r4, r2                                   |         r4 ^= r2;
    0x000069fe lsrs r2, r1, 0x1c                             |         r2 = r1 >> 0x1c;
    0x00006a00 lsls r1, r1, 0x1e                             |         r1 <<= 0x1e;
    0x00006a02 orr.w r2, r2, r5, lsl 4                       |         r2 |= (r5 << 4);
    0x00006a06 orr.w r1, r1, r5, lsr 2                       |         r1 |= (r5 >> 2);
    0x00006a0a eors r2, r1                                   |         r2 ^= r1;
    0x00006a0c lsls r1, r5, 0x19                             |         r1 = r5 << 0x19;
    0x00006a0e orr.w r1, r1, r7, lsr 7                       |         r1 |= (r7 >> 7);
    0x00006a12 eors r4, r1                                   |         r4 ^= r1;
    0x00006a14 lsls r1, r7, 0x19                             |         r1 = r7 << 0x19;
    0x00006a16 ldr r7, [sp, 0x38]                            |         r7 = var_38h;
    0x00006a18 orr.w r1, r1, r5, lsr 7                       |         r1 |= (r5 >> 7);
    0x00006a1c eors r2, r1                                   |         r2 ^= r1;
    0x00006a1e lsrs r1, r0, 0x12                             |         r1 = r0 >> 0x12;
    0x00006a20 orr.w sl, r8, r7                              |         sl = r8 | r7;
    0x00006a24 orr.w r1, r1, r3, lsl 14                      |         r1 |= (r3 << 14);
    0x00006a28 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006a2a and.w sl, sl, r5                              |         sl &= r5;
    0x00006a2e eor.w sb, sb, r1                              |         sb ^= r1;
    0x00006a32 and.w fp, r8, r7                              |         
    0x00006a36 orr.w r1, r3, ip                              |         r1 = r3 | ip;
    0x00006a3a ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00006a3c orr.w sl, sl, fp                              |         sl |= fp;
    0x00006a40 adds.w r4, r4, sl                             |         r4 += sl;
    0x00006a44 and.w r1, r1, r3                              |         r1 &= r3;
    0x00006a48 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006a4a ldr r5, [r3, 0x58]                            |         r5 = *((r3 + 0x58));
    0x00006a4c ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x00006a4e str r5, [sp, 0x94]                            |         var_94h = r5;
    0x00006a50 lsr.w sl, r3, 0xe                             |         sl = r3 >> 0xe;
    0x00006a54 lsr.w fp, r3, 0x12                            |         
    0x00006a58 orr.w sl, sl, r0, lsl 18                      |         sl |= (r0 << 18);
    0x00006a5c orr.w fp, fp, r0, lsl 14                      |         
    0x00006a60 eor.w sl, sl, fp                              |         sl ^= fp;
    0x00006a64 lsl.w fp, r0, 0x17                            |         
    0x00006a68 orr.w fp, fp, r3, lsr 9                       |         
    0x00006a6c ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006a6e eor.w sb, sb, fp                              |         sb ^= fp;
    0x00006a72 and.w fp, r3, ip                              |         
    0x00006a76 orr.w r1, r1, fp                              |         r1 |= fp;
    0x00006a7a adc.w r1, r2, r1                              |         __asm ("adc.w r1, r2, r1");
    0x00006a7e adds.w r3, r4, lr                             |         r3 = r4 + lr;
    0x00006a82 adc.w r6, r6, r1                              |         __asm ("adc.w r6, r6, r1");
    0x00006a86 str r3, [sp, 8]                               |         var_8h = r3;
    0x00006a88 ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x00006a8a ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006a8c ldr r4, [sp, 0x20]                            |         r4 = var_20h;
    0x00006a8e adds r2, r1, r5                               |         r2 = r1 + r5;
    0x00006a90 ldr r1, [sp, 0x30]                            |         r1 = var_30h;
    0x00006a92 ldr r5, [r3, 0x5c]                            |         r5 = *((r3 + 0x5c));
    0x00006a94 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00006a96 adc.w lr, r1, r5                              |         __asm ("adc.w lr, r1, r5");
    0x00006a9a lsls r1, r4, 0x17                             |         r1 = r4 << 0x17;
    0x00006a9c str r5, [sp, 0x98]                            |         var_98h = r5;
    0x00006a9e mov r5, r0                                    |         r5 = r0;
    0x00006aa0 orr.w r1, r1, r0, lsr 9                       |         r1 |= (r0 >> 9);
    0x00006aa4 ldr r0, [sp, 0x3c]                            |         r0 = var_3ch;
    0x00006aa6 str r5, [sp, 0x10]                            |         var_10h = r5;
    0x00006aa8 eor.w sl, sl, r1                              |         sl ^= r1;
    0x00006aac mov r1, r3                                    |         r1 = r3;
    0x00006aae eors r1, r0                                   |         r1 ^= r0;
    0x00006ab0 ldr r0, [sp, 0x2c]                            |         r0 = var_2ch;
    0x00006ab2 ands r1, r5                                   |         r1 &= r5;
    0x00006ab4 ldr r5, [sp, 0x9c]                            |         r5 = var_9ch;
    0x00006ab6 eors r1, r3                                   |         r1 ^= r3;
    0x00006ab8 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00006aba adds r1, r1, r2                               |         r1 += r2;
    0x00006abc mov r2, r3                                    |         r2 = r3;
    0x00006abe eor.w r2, r2, r0                              |         r2 ^= r0;
    0x00006ac2 and.w r2, r2, r4                              |         r2 &= r4;
    0x00006ac6 eor.w r2, r2, r3                              |         r2 ^= r3;
    0x00006aca ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006acc adc.w r2, r2, lr                              |         __asm ("adc.w r2, r2, lr");
    0x00006ad0 adds.w r1, r1, sb                             |         r1 += sb;
    0x00006ad4 adc.w r2, r2, sl                              |         __asm ("adc.w r2, r2, sl");
    0x00006ad8 adds r1, r1, r5                               |         r1 += r5;
    0x00006ada ldr r5, [sp, 0xa0]                            |         r5 = var_a0h;
    0x00006adc lsr.w sl, r6, 0x1c                            |         sl = r6 >> 0x1c;
    0x00006ae0 adc.w r2, r5, r2                              |         __asm ("adc.w r2, r5, r2");
    0x00006ae4 mov r4, r2                                    |         r4 = r2;
    0x00006ae6 adds.w r2, r8, r1                             |         r2 = r8 + r1;
    0x00006aea str r4, [sp, 0x18]                            |         var_18h = r4;
    0x00006aec adc.w r5, r3, r4                              |         __asm ("adc.w r5, r3, r4");
    0x00006af0 ldr r4, [sp, 8]                               |         r4 = var_8h;
    0x00006af2 lsr.w r8, r2, 0xe                             |         r8 = r2 >> 0xe;
    0x00006af6 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006af8 str r5, [sp, 0x34]                            |         var_34h = r5;
    0x00006afa orr.w r8, r8, r5, lsl 18                      |         r8 |= (r5 << 18);
    0x00006afe mov r5, r2                                    |         r5 = r2;
    0x00006b00 lsl.w lr, r4, 0x1e                            |         lr = r4 << 0x1e;
    0x00006b04 orr.w sl, sl, r4, lsl 4                       |         sl |= (r4 << 4);
    0x00006b08 lsrs r3, r3, 0x1c                             |         r3 >>= 0x1c;
    0x00006b0a orr.w lr, lr, r6, lsr 2                       |         lr |= (r6 >> 2);
    0x00006b0e orr.w r3, r3, r6, lsl 4                       |         r3 |= (r6 << 4);
    0x00006b12 eor.w r3, r3, lr                              |         r3 ^= lr;
    0x00006b16 lsl.w lr, r6, 0x1e                            |         lr = r6 << 0x1e;
    0x00006b1a orr.w lr, lr, r4, lsr 2                       |         lr |= (r4 >> 2);
    0x00006b1e eor.w sl, sl, lr                              |         sl ^= lr;
    0x00006b22 lsl.w lr, r4, 0x19                            |         lr = r4 << 0x19;
    0x00006b26 orr.w lr, lr, r6, lsr 7                       |         lr |= (r6 >> 7);
    0x00006b2a eor.w r3, r3, lr                              |         r3 ^= lr;
    0x00006b2e lsl.w lr, r6, 0x19                            |         lr = r6 << 0x19;
    0x00006b32 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00006b34 mov r3, r4                                    |         r3 = r4;
    0x00006b36 orr.w lr, lr, r4, lsr 7                       |         lr |= (r4 >> 7);
    0x00006b3a ldr r4, [sp, 0x28]                            |         r4 = var_28h;
    0x00006b3c eor.w sl, sl, lr                              |         sl ^= lr;
    0x00006b40 lsr.w lr, r2, 0x12                            |         lr = r2 >> 0x12;
    0x00006b44 ldr r2, [sp, 0x34]                            |         r2 = var_34h;
    0x00006b46 orr.w sb, r7, r4                              |         sb = r7 | r4;
    0x00006b4a and.w sb, sb, r3                              |         sb &= r3;
    0x00006b4e ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00006b50 and.w fp, r7, r4                              |         
    0x00006b54 ldr r4, [sp, 0xc]                             |         r4 = var_ch;
    0x00006b56 orr.w sb, sb, fp                              |         sb |= fp;
    0x00006b5a orr.w lr, lr, r2, lsl 14                      |         lr |= (r2 << 14);
    0x00006b5e ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00006b60 eor.w r8, r8, lr                              |         r8 ^= lr;
    0x00006b64 orr.w lr, ip, r3                              |         lr = ip | r3;
    0x00006b68 ldr r2, [r2, 0x60]                            |         r2 = *((r2 + 0x60));
    0x00006b6a and.w lr, lr, r6                              |         lr &= r6;
    0x00006b6e ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00006b70 str r2, [sp, 0x70]                            |         var_70h = r2;
    0x00006b72 ldr r2, [sp, 0x34]                            |         r2 = var_34h;
    0x00006b74 adds.w r3, r3, sb                             |         r3 += sb;
    0x00006b78 lsr.w fp, r2, 0x12                            |         
    0x00006b7c lsr.w sb, r2, 0xe                             |         sb = r2 >> 0xe;
    0x00006b80 orr.w fp, fp, r5, lsl 14                      |         
    0x00006b84 orr.w sb, sb, r5, lsl 18                      |         sb |= (r5 << 18);
    0x00006b88 eor.w sb, sb, fp                              |         sb ^= fp;
    0x00006b8c lsl.w fp, r5, 0x17                            |         
    0x00006b90 orr.w fp, fp, r2, lsr 9                       |         
    0x00006b94 eor.w r8, r8, fp                              |         r8 ^= fp;
    0x00006b98 and.w fp, ip, r4                              |         
    0x00006b9c orr.w lr, lr, fp                              |         lr |= fp;
    0x00006ba0 adc.w lr, sl, lr                              |         __asm ("adc.w lr, sl, lr");
    0x00006ba4 adds r4, r3, r1                               |         r4 = r3 + r1;
    0x00006ba6 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006ba8 str r4, [sp, 0x14]                            |         var_14h = r4;
    0x00006baa ldr r1, [sp, 0x24]                            |         r1 = var_24h;
    0x00006bac adc.w r3, r3, lr                              |         __asm ("adc.w r3, r3, lr");
    0x00006bb0 lsl.w lr, r2, 0x17                            |         lr = r2 << 0x17;
    0x00006bb4 mov r4, r3                                    |         r4 = r3;
    0x00006bb6 ldr r3, [sp, 0x70]                            |         r3 = var_70h;
    0x00006bb8 orr.w lr, lr, r5, lsr 9                       |         lr |= (r5 >> 9);
    0x00006bbc adds.w fp, r1, r3                             |         
    0x00006bc0 ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x00006bc2 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00006bc4 eor.w lr, sb, lr                              |         lr = sb ^ lr;
    0x00006bc8 ldr r1, [r1, 0x64]                            |         r1 = *((r1 + 0x64));
    0x00006bca adc.w sl, r3, r1                              |         __asm ("adc.w sl, r3, r1");
    0x00006bce str r1, [sp, 0x9c]                            |         var_9ch = r1;
    0x00006bd0 ldr r3, [sp, 0x3c]                            |         r3 = var_3ch;
    0x00006bd2 ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x00006bd4 str r5, [sp, 0x3c]                            |         var_3ch = r5;
    0x00006bd6 eors r1, r3                                   |         r1 ^= r3;
    0x00006bd8 ands r1, r5                                   |         r1 &= r5;
    0x00006bda ldr r5, [sp, 0x20]                            |         r5 = var_20h;
    0x00006bdc eors r1, r3                                   |         r1 ^= r3;
    0x00006bde adds.w r1, r1, fp                             |         r1 += fp;
    0x00006be2 eor.w sb, r0, r5                              |         sb = r0 ^ r5;
    0x00006be6 and.w sb, sb, r2                              |         sb &= r2;
    0x00006bea eor.w sb, sb, r0                              |         sb ^= r0;
    0x00006bee ldr r0, [sp, 0xa4]                            |         r0 = var_a4h;
    0x00006bf0 adc.w sb, sb, sl                              |         __asm ("adc.w sb, sb, sl");
    0x00006bf4 adds.w r1, r8, r1                             |         r1 = r8 + r1;
    0x00006bf8 adc.w lr, lr, sb                              |         __asm ("adc.w lr, lr, sb");
    0x00006bfc adds r1, r1, r0                               |         r1 += r0;
    0x00006bfe ldr r0, [sp, 0xa8]                            |         r0 = var_a8h;
    0x00006c00 adc.w lr, r0, lr                              |         __asm ("adc.w lr, r0, lr");
    0x00006c04 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x00006c06 adds r2, r7, r1                               |         r2 = r7 + r1;
    0x00006c08 mov r7, r4                                    |         r7 = r4;
    0x00006c0a adc.w ip, ip, lr                              |         __asm ("adc.w ip, ip, lr");
    0x00006c0e lsl.w r8, r7, 0x1e                            |         r8 = r7 << 0x1e;
    0x00006c12 mov r5, ip                                    |         r5 = ip;
    0x00006c14 lsr.w fp, r2, 0xe                             |         
    0x00006c18 lsrs r0, r0, 0x1c                             |         r0 >>= 0x1c;
    0x00006c1a lsr.w sb, r2, 0x12                            |         sb = r2 >> 0x12;
    0x00006c1e orr.w fp, fp, r5, lsl 18                      |         
    0x00006c22 orr.w r0, r0, r4, lsl 4                       |         r0 |= (r4 << 4);
    0x00006c26 ldr r4, [sp, 0x14]                            |         r4 = var_14h;
    0x00006c28 lsl.w ip, r4, 0x1e                            |         
    0x00006c2c ldr r4, [sp, 0x14]                            |         r4 = var_14h;
    0x00006c2e orr.w ip, ip, r7, lsr 2                       |         
    0x00006c32 eor.w r0, r0, ip                              |         r0 ^= ip;
    0x00006c36 lsr.w ip, r7, 0x1c                            |         
    0x00006c3a orr.w ip, ip, r4, lsl 4                       |         
    0x00006c3e ldr r4, [sp, 0x14]                            |         r4 = var_14h;
    0x00006c40 orr.w r8, r8, r4, lsr 2                       |         r8 |= (r4 >> 2);
    0x00006c44 eor.w ip, ip, r8                              |         
    0x00006c48 lsl.w r8, r4, 0x19                            |         r8 = r4 << 0x19;
    0x00006c4c orr.w r8, r8, r7, lsr 7                       |         r8 |= (r7 >> 7);
    0x00006c50 eor.w r0, r0, r8                              |         r0 ^= r8;
    0x00006c54 lsl.w r8, r7, 0x19                            |         r8 = r7 << 0x19;
    0x00006c58 str r0, [sp, 0x18]                            |         var_18h = r0;
    0x00006c5a str r7, [sp, 0x38]                            |         var_38h = r7;
    0x00006c5c ldr r4, [sp, 0x14]                            |         r4 = var_14h;
    0x00006c5e ldr r0, [sp, 8]                               |         r0 = var_8h;
    0x00006c60 ldr r7, [sp, 0x28]                            |         r7 = var_28h;
    0x00006c62 orr.w r8, r8, r4, lsr 7                       |         r8 |= (r4 >> 7);
    0x00006c66 eor.w ip, ip, r8                              |         
    0x00006c6a orr.w r8, r7, r0                              |         r8 = r7 | r0;
    0x00006c6e mov r7, r5                                    |         r7 = r5;
    0x00006c70 mov r5, r2                                    |         r5 = r2;
    0x00006c72 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x00006c74 orr.w sb, sb, r7, lsl 14                      |         sb |= (r7 << 14);
    0x00006c78 and.w r8, r8, r4                              |         r8 &= r4;
    0x00006c7c str r7, [sp, 0x54]                            |         var_54h = r7;
    0x00006c7e eor.w fp, fp, sb                              |         
    0x00006c82 orr.w sl, r2, r6                              |         sl = r2 | r6;
    0x00006c86 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00006c88 and.w sl, sl, r2                              |         sl &= r2;
    0x00006c8c ldr r2, [sp, 0x28]                            |         r2 = var_28h;
    0x00006c8e and.w sb, r2, r0                              |         sb = r2 & r0;
    0x00006c92 ldr r2, [sp, 0x18]                            |         r2 = var_18h;
    0x00006c94 orr.w r8, r8, sb                              |         r8 |= sb;
    0x00006c98 lsr.w sb, r7, 0xe                             |         sb = r7 >> 0xe;
    0x00006c9c adds.w r0, r2, r8                             |         r0 = r2 + r8;
    0x00006ca0 ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00006ca2 lsr.w r8, r7, 0x12                            |         r8 = r7 >> 0x12;
    0x00006ca6 orr.w sb, sb, r5, lsl 18                      |         sb |= (r5 << 18);
    0x00006caa ldr r2, [r2, 0x68]                            |         r2 = *((r2 + 0x68));
    0x00006cac orr.w r8, r8, r5, lsl 14                      |         r8 |= (r5 << 14);
    0x00006cb0 eor.w sb, sb, r8                              |         sb ^= r8;
    0x00006cb4 lsl.w r8, r5, 0x17                            |         r8 = r5 << 0x17;
    0x00006cb8 str r2, [sp, 0x74]                            |         var_74h = r2;
    0x00006cba ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x00006cbc orr.w r8, r8, r7, lsr 9                       |         r8 |= (r7 >> 9);
    0x00006cc0 eor.w r8, fp, r8                              |         r8 = fp ^ r8;
    0x00006cc4 and.w fp, r2, r6                              |         
    0x00006cc8 ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00006cca orr.w sl, sl, fp                              |         sl |= fp;
    0x00006cce adc.w ip, ip, sl                              |         __asm ("adc.w ip, ip, sl");
    0x00006cd2 adds r0, r0, r1                               |         r0 += r1;
    0x00006cd4 ldr r1, [sp, 0x74]                            |         r1 = var_74h;
    0x00006cd6 adc.w ip, lr, ip                              |         __asm ("adc.w ip, lr, ip");
    0x00006cda str r0, [sp, 0x4c]                            |         var_4ch = r0;
    0x00006cdc str.w ip, [sp, 0x24]                          |         __asm ("str.w ip, [var_24h]");
    0x00006ce0 lsl.w ip, r7, 0x17                            |         
    0x00006ce4 adds r0, r3, r1                               |         r0 = r3 + r1;
    0x00006ce6 ldr r1, [r2, 0x6c]                            |         r1 = *((r2 + 0x6c));
    0x00006ce8 ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x00006cea mov r2, r5                                    |         r2 = r5;
    0x00006cec orr.w ip, ip, r5, lsr 9                       |         
    0x00006cf0 ldr r5, [sp, 0x3c]                            |         r5 = var_3ch;
    0x00006cf2 str r1, [sp, 0xa0]                            |         var_a0h = r1;
    0x00006cf4 adc.w lr, r3, r1                              |         __asm ("adc.w lr, r3, r1");
    0x00006cf8 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006cfa eor.w ip, sb, ip                              |         
    0x00006cfe str r2, [sp, 0x50]                            |         var_50h = r2;
    0x00006d00 eor.w r1, r3, r5                              |         r1 = r3 ^ r5;
    0x00006d04 ands r1, r2                                   |         r1 &= r2;
    0x00006d06 eors r1, r3                                   |         r1 ^= r3;
    0x00006d08 ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x00006d0a adds r1, r1, r0                               |         r1 += r0;
    0x00006d0c ldr r0, [sp, 0x34]                            |         r0 = var_34h;
    0x00006d0e eor.w r0, r3, r0                              |         r0 = r3 ^ r0;
    0x00006d12 and.w r0, r0, r7                              |         r0 &= r7;
    0x00006d16 ldr r7, [sp, 0x4c]                            |         r7 = var_4ch;
    0x00006d18 eor.w r0, r0, r3                              |         r0 ^= r3;
    0x00006d1c ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x00006d1e adc.w r0, r0, lr                              |         __asm ("adc.w r0, r0, lr");
    0x00006d22 adds.w r1, r8, r1                             |         r1 = r8 + r1;
    0x00006d26 adc.w ip, ip, r0                              |         __asm ("adc.w ip, ip, r0");
    0x00006d2a ldr r0, [sp, 0xac]                            |         r0 = var_ach;
    0x00006d2c lsls r5, r7, 0x1e                             |         r5 = r7 << 0x1e;
    0x00006d2e mov r2, r7                                    |         r2 = r7;
    0x00006d30 adds r1, r1, r0                               |         r1 += r0;
    0x00006d32 ldr r0, [sp, 0xb0]                            |         r0 = var_b0h;
    0x00006d34 adc.w ip, r0, ip                              |         __asm ("adc.w ip, r0, ip");
    0x00006d38 adds r0, r3, r1                               |         r0 = r3 + r1;
    0x00006d3a ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00006d3c str r0, [sp, 0x18]                            |         var_18h = r0;
    0x00006d3e lsr.w r0, r7, 0x1c                            |         r0 = r7 >> 0x1c;
    0x00006d42 adc.w lr, r3, ip                              |         __asm ("adc.w lr, r3, ip");
    0x00006d46 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00006d48 str.w lr, [sp, 0xc]                           |         __asm ("str.w lr, [var_ch]");
    0x00006d4c orr.w r5, r5, r3, lsr 2                       |         r5 |= (r3 >> 2);
    0x00006d50 orr.w r0, r0, r3, lsl 4                       |         r0 |= (r3 << 4);
    0x00006d54 eors r0, r5                                   |         r0 ^= r5;
    0x00006d56 lsrs r5, r3, 0x1c                             |         r5 = r3 >> 0x1c;
    0x00006d58 orr.w r5, r5, r7, lsl 4                       |         r5 |= (r7 << 4);
    0x00006d5c lsls r7, r3, 0x1e                             |         r7 = r3 << 0x1e;
    0x00006d5e orr.w r7, r7, r2, lsr 2                       |         r7 |= (r2 >> 2);
    0x00006d62 eors r5, r7                                   |         r5 ^= r7;
    0x00006d64 lsls r7, r2, 0x19                             |         r7 = r2 << 0x19;
    0x00006d66 orr.w r7, r7, r3, lsr 7                       |         r7 |= (r3 >> 7);
    0x00006d6a eors r0, r7                                   |         r0 ^= r7;
    0x00006d6c lsls r7, r3, 0x19                             |         r7 = r3 << 0x19;
    0x00006d6e ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006d70 orr.w r7, r7, r2, lsr 7                       |         r7 |= (r2 >> 7);
    0x00006d74 eors r5, r7                                   |         r5 ^= r7;
    0x00006d76 orr.w r7, r3, r4                              |         r7 = r3 | r4;
    0x00006d7a ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006d7c ands r7, r2                                   |         r7 &= r2;
    0x00006d7e mov r2, lr                                    |         r2 = lr;
    0x00006d80 lsr.w sb, r3, 0xe                             |         sb = r3 >> 0xe;
    0x00006d84 orr.w sb, sb, lr, lsl 18                      |         sb |= (lr << 18);
    0x00006d88 lsr.w lr, r3, 0x12                            |         lr = r3 >> 0x12;
    0x00006d8c ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00006d8e orr.w lr, lr, r2, lsl 14                      |         lr |= (r2 << 14);
    0x00006d92 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00006d94 eor.w sb, sb, lr                              |         sb ^= lr;
    0x00006d98 orr.w r8, r6, r2                              |         r8 = r6 | r2;
    0x00006d9c ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00006d9e and.w r8, r8, r3                              |         r8 &= r3;
    0x00006da2 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006da4 and.w lr, r3, r4                              |         lr = r3 & r4;
    0x00006da8 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006daa orr.w r7, r7, lr                              |         r7 |= lr;
    0x00006dae adds r0, r0, r7                               |         r0 += r7;
    0x00006db0 ldr r7, [r2, 0x70]                            |         r7 = *((r2 + 0x70));
    0x00006db2 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x00006db4 str r7, [sp, 0x40]                            |         var_40h = r7;
    0x00006db6 mov r4, r2                                    |         r4 = r2;
    0x00006db8 lsr.w lr, r2, 0xe                             |         lr = r2 >> 0xe;
    0x00006dbc lsr.w r7, r2, 0x12                            |         r7 = r2 >> 0x12;
    0x00006dc0 orr.w lr, lr, r3, lsl 18                      |         lr |= (r3 << 18);
    0x00006dc4 orr.w r7, r7, r3, lsl 14                      |         r7 |= (r3 << 14);
    0x00006dc8 eor.w lr, lr, r7                              |         lr ^= r7;
    0x00006dcc lsl.w r7, r3, 0x17                            |         r7 = r3 << 0x17;
    0x00006dd0 orr.w r7, r7, r2, lsr 9                       |         r7 |= (r2 >> 9);
    0x00006dd4 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x00006dd6 eor.w r7, sb, r7                              |         r7 = sb ^ r7;
    0x00006dda and.w sb, r6, r2                              |         sb = r6 & r2;
    0x00006dde ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00006de0 orr.w r8, r8, sb                              |         r8 |= sb;
    0x00006de4 adc.w r5, r5, r8                              |         __asm ("adc.w r5, r5, r8");
    0x00006de8 adds r1, r0, r1                               |         r1 = r0 + r1;
    0x00006dea str r1, [sp, 0x28]                            |         var_28h = r1;
    0x00006dec adc.w ip, ip, r5                              |         __asm ("adc.w ip, ip, r5");
    0x00006df0 ldr r0, [sp, 0x10]                            |         r0 = var_10h;
    0x00006df2 ldr r1, [sp, 0x40]                            |         r1 = var_40h;
    0x00006df4 str.w ip, [sp, 0x2c]                          |         __asm ("str.w ip, [var_2ch]");
    0x00006df8 lsl.w ip, r4, 0x17                            |         
    0x00006dfc adds r0, r0, r1                               |         r0 += r1;
    0x00006dfe ldr r1, [r2, 0x74]                            |         r1 = *((r2 + 0x74));
    0x00006e00 orr.w ip, ip, r3, lsr 9                       |         
    0x00006e04 ldr r3, [sp, 0x3c]                            |         r3 = var_3ch;
    0x00006e06 ldr r2, [sp, 0x50]                            |         r2 = var_50h;
    0x00006e08 mov r5, r1                                    |         r5 = r1;
    0x00006e0a str r1, [sp, 0x48]                            |         var_48h = r1;
    0x00006e0c ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x00006e0e eor.w ip, lr, ip                              |         
    0x00006e12 adc.w r5, r1, r5                              |         __asm ("adc.w r5, r1, r5");
    0x00006e16 mov r1, r3                                    |         r1 = r3;
    0x00006e18 eors r1, r2                                   |         r1 ^= r2;
    0x00006e1a ldr r2, [sp, 0x18]                            |         r2 = var_18h;
    0x00006e1c ands r1, r2                                   |         r1 &= r2;
    0x00006e1e ldr r2, [sp, 0x54]                            |         r2 = var_54h;
    0x00006e20 eors r1, r3                                   |         r1 ^= r3;
    0x00006e22 ldr r3, [sp, 0x34]                            |         r3 = var_34h;
    0x00006e24 adds r1, r1, r0                               |         r1 += r0;
    0x00006e26 mov r0, r3                                    |         r0 = r3;
    0x00006e28 eor.w r0, r0, r2                              |         r0 ^= r2;
    0x00006e2c ldr r2, [sp, 0x4c]                            |         r2 = var_4ch;
    0x00006e2e and.w r0, r0, r4                              |         r0 &= r4;
    0x00006e32 eor.w r0, r0, r3                              |         r0 ^= r3;
    0x00006e36 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006e38 adc.w r0, r0, r5                              |         __asm ("adc.w r0, r0, r5");
    0x00006e3c adds r1, r7, r1                               |         r1 = r7 + r1;
    0x00006e3e adc.w ip, ip, r0                              |         __asm ("adc.w ip, ip, r0");
    0x00006e42 ldr r0, [sp, 0xb4]                            |         r0 = var_b4h;
    0x00006e44 ldr r5, [sp, 0x28]                            |         r5 = var_28h;
    0x00006e46 ldr r7, [sp, 0x2c]                            |         r7 = var_2ch;
    0x00006e48 adds r1, r1, r0                               |         r1 += r0;
    0x00006e4a ldr r0, [sp, 0xb8]                            |         r0 = var_b8h;
    0x00006e4c adc.w ip, r0, ip                              |         __asm ("adc.w ip, r0, ip");
    0x00006e50 adds r4, r3, r1                               |         r4 = r3 + r1;
    0x00006e52 adc.w r0, r6, ip                              |         __asm ("adc.w r0, r6, ip");
    0x00006e56 str r4, [sp, 0x30]                            |         var_30h = r4;
    0x00006e58 str r0, [sp, 0x10]                            |         var_10h = r0;
    0x00006e5a lsls r4, r5, 0x1e                             |         r4 = r5 << 0x1e;
    0x00006e5c lsrs r0, r5, 0x1c                             |         r0 = r5 >> 0x1c;
    0x00006e5e lsrs r6, r7, 0x1c                             |         r6 = r7 >> 0x1c;
    0x00006e60 orr.w r4, r4, r7, lsr 2                       |         r4 |= (r7 >> 2);
    0x00006e64 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00006e66 orr.w r0, r0, r7, lsl 4                       |         r0 |= (r7 << 4);
    0x00006e6a orr.w r6, r6, r5, lsl 4                       |         r6 |= (r5 << 4);
    0x00006e6e eors r0, r4                                   |         r0 ^= r4;
    0x00006e70 lsls r4, r7, 0x1e                             |         r4 = r7 << 0x1e;
    0x00006e72 orr.w r4, r4, r5, lsr 2                       |         r4 |= (r5 >> 2);
    0x00006e76 eors r6, r4                                   |         r6 ^= r4;
    0x00006e78 lsls r4, r5, 0x19                             |         r4 = r5 << 0x19;
    0x00006e7a orr.w r4, r4, r7, lsr 7                       |         r4 |= (r7 >> 7);
    0x00006e7e eors r0, r4                                   |         r0 ^= r4;
    0x00006e80 lsls r4, r7, 0x19                             |         r4 = r7 << 0x19;
    0x00006e82 orr.w r4, r4, r5, lsr 7                       |         r4 |= (r5 >> 7);
    0x00006e86 eors r6, r4                                   |         r6 ^= r4;
    0x00006e88 mov r4, r2                                    |         r4 = r2;
    0x00006e8a orrs r4, r3                                   |         r4 |= r3;
    0x00006e8c ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00006e8e ands r4, r5                                   |         r4 &= r5;
    0x00006e90 ldr r5, [sp, 0x38]                            |         r5 = var_38h;
    0x00006e92 orrs r5, r3                                   |         r5 |= r3;
    0x00006e94 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006e96 ands r5, r7                                   |         r5 &= r7;
    0x00006e98 ldr r7, [sp, 0x14]                            |         r7 = var_14h;
    0x00006e9a ands r7, r2                                   |         r7 &= r2;
    0x00006e9c orrs r4, r7                                   |         r4 |= r7;
    0x00006e9e adds r0, r0, r4                               |         r0 += r4;
    0x00006ea0 ldr r4, [sp, 0x30]                            |         r4 = var_30h;
    0x00006ea2 lsr.w r7, r4, 0xe                             |         r7 = r4 >> 0xe;
    0x00006ea6 lsr.w r4, r4, 0x12                            |         r4 >>= 0x12;
    0x00006eaa orr.w r7, r7, r3, lsl 18                      |         r7 |= (r3 << 18);
    0x00006eae orr.w r4, r4, r3, lsl 14                      |         r4 |= (r3 << 14);
    0x00006eb2 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00006eb4 eor.w r4, r4, r7                              |         r4 ^= r7;
    0x00006eb8 ldr r7, [sp, 0x38]                            |         r7 = var_38h;
    0x00006eba and.w r7, r7, r3                              |         r7 &= r3;
    0x00006ebe ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x00006ec0 orr.w r5, r5, r7                              |         r5 |= r7;
    0x00006ec4 ldr r7, [sp, 4]                               |         r7 = var_4h;
    0x00006ec6 adc.w r5, r6, r5                              |         __asm ("adc.w r5, r6, r5");
    0x00006eca adds r0, r0, r1                               |         r0 += r1;
    0x00006ecc ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x00006ece adc.w r6, ip, r5                              |         __asm ("adc.w r6, ip, r5");
    0x00006ed2 str r0, [sp, 0x1c]                            |         var_1ch = r0;
    0x00006ed4 ldr r5, [sp, 0x3c]                            |         r5 = var_3ch;
    0x00006ed6 ldr r0, [r7, 0x78]                            |         r0 = *((r7 + 0x78));
    0x00006ed8 str r6, [sp, 8]                               |         var_8h = r6;
    0x00006eda ldr.w fp, [r7, 0x7c]                          |         fp = *((r7 + 0x7c));
    0x00006ede adds r6, r5, r0                               |         r6 = r5 + r0;
    0x00006ee0 str r0, [sp, 0x20]                            |         var_20h = r0;
    0x00006ee2 lsr.w r0, r1, 0xe                             |         r0 = r1 >> 0xe;
    0x00006ee6 lsr.w r1, r1, 0x12                            |         r1 >>= 0x12;
    0x00006eea lsl.w r5, r3, 0x17                            |         r5 = r3 << 0x17;
    0x00006eee orr.w r1, r1, r3, lsl 14                      |         r1 |= (r3 << 14);
    0x00006ef2 orr.w r0, r0, r3, lsl 18                      |         r0 |= (r3 << 18);
    0x00006ef6 eor.w r0, r0, r1                              |         r0 ^= r1;
    0x00006efa ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x00006efc orr.w r5, r5, r1, lsr 9                       |         r5 |= (r1 >> 9);
    0x00006f00 ldr r1, [sp, 0x34]                            |         r1 = var_34h;
    0x00006f02 eor.w r5, r5, r4                              |         r5 ^= r4;
    0x00006f06 ldr r4, [sp, 0x10]                            |         r4 = var_10h;
    0x00006f08 adc.w r7, r1, fp                              |         __asm ("adc.w r7, r1, fp");
    0x00006f0c lsls r1, r4, 0x17                             |         r1 = r4 << 0x17;
    0x00006f0e ldr r4, [sp, 0x50]                            |         r4 = var_50h;
    0x00006f10 orr.w r1, r1, r3, lsr 9                       |         r1 |= (r3 >> 9);
    0x00006f14 eors r0, r1                                   |         r0 ^= r1;
    0x00006f16 ldr r1, [sp, 0x18]                            |         r1 = var_18h;
    0x00006f18 eors r1, r4                                   |         r1 ^= r4;
    0x00006f1a ands r1, r3                                   |         r1 &= r3;
    0x00006f1c ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006f1e eors r1, r4                                   |         r1 ^= r4;
    0x00006f20 ldr r4, [sp, 0x1c]                            |         r4 = var_1ch;
    0x00006f22 adds.w ip, r1, r6                             |         
    0x00006f26 ldr r1, [sp, 0xc]                             |         r1 = var_ch;
    0x00006f28 lsr.w r6, r4, 0x1c                            |         r6 = r4 >> 0x1c;
    0x00006f2c lsl.w r4, r4, 0x1e                            |         r4 <<= 0x1e;
    0x00006f30 orr.w r6, r6, r3, lsl 4                       |         r6 |= (r3 << 4);
    0x00006f34 orr.w r4, r4, r3, lsr 2                       |         r4 |= (r3 >> 2);
    0x00006f38 ldr r3, [sp, 0x54]                            |         r3 = var_54h;
    0x00006f3a eor.w r6, r6, r4                              |         r6 ^= r4;
    0x00006f3e mov r4, r3                                    |         r4 = r3;
    0x00006f40 eor.w r4, r4, r1                              |         r4 ^= r1;
    0x00006f44 ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x00006f46 and.w r4, r4, r1                              |         r4 &= r1;
    0x00006f4a eor.w r4, r4, r3                              |         r4 ^= r3;
    0x00006f4e ldr r3, [sp, 0x38]                            |         r3 = var_38h;
    0x00006f50 adc.w r4, r4, r7                              |         __asm ("adc.w r4, r4, r7");
    0x00006f54 adds.w r1, r5, ip                             |         r1 = r5 + ip;
    0x00006f58 adc.w r0, r0, r4                              |         __asm ("adc.w r0, r0, r4");
    0x00006f5c ldr r4, [sp, 0xbc]                            |         r4 = var_bch;
    0x00006f5e adds r1, r1, r4                               |         r1 += r4;
    0x00006f60 ldr r4, [sp, 0xc0]                            |         r4 = var_c0h;
    0x00006f62 adc.w r0, r4, r0                              |         __asm ("adc.w r0, r4, r0");
    0x00006f66 ldr r4, [sp, 0x14]                            |         r4 = var_14h;
    0x00006f68 adds r4, r4, r1                               |         r4 += r1;
    0x00006f6a str r4, [sp, 0x44]                            |         var_44h = r4;
    0x00006f6c adc.w r4, r3, r0                              |         __asm ("adc.w r4, r3, r0");
    0x00006f70 str r4, [sp, 0x34]                            |         var_34h = r4;
    0x00006f72 ldr r7, [sp, 8]                               |         r7 = var_8h;
    0x00006f74 ldr r5, [sp, 0x1c]                            |         r5 = var_1ch;
    0x00006f76 lsrs r4, r7, 0x1c                             |         r4 = r7 >> 0x1c;
    0x00006f78 lsls r3, r7, 0x1e                             |         r3 = r7 << 0x1e;
    0x00006f7a orr.w r4, r4, r5, lsl 4                       |         r4 |= (r5 << 4);
    0x00006f7e orr.w r3, r3, r5, lsr 2                       |         r3 |= (r5 >> 2);
    0x00006f82 eors r4, r3                                   |         r4 ^= r3;
    0x00006f84 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006f86 mov r7, r5                                    |         r7 = r5;
    0x00006f88 lsls r5, r5, 0x19                             |         r5 <<= 0x19;
    0x00006f8a orr.w r5, r5, r3, lsr 7                       |         r5 |= (r3 >> 7);
    0x00006f8e lsls r3, r3, 0x19                             |         r3 <<= 0x19;
    0x00006f90 eor.w ip, r5, r6                              |         
    0x00006f94 mov r6, r2                                    |         r6 = r2;
    0x00006f96 ldr r2, [sp, 0x28]                            |         r2 = var_28h;
    0x00006f98 orr.w r3, r3, r7, lsr 7                       |         r3 |= (r7 >> 7);
    0x00006f9c ldr r5, [sp, 0x2c]                            |         r5 = var_2ch;
    0x00006f9e eors r4, r3                                   |         r4 ^= r3;
    0x00006fa0 orr.w r3, r6, r2                              |         r3 = r6 | r2;
    0x00006fa4 ands r3, r7                                   |         r3 &= r7;
    0x00006fa6 ldr r7, [sp, 0x24]                            |         r7 = var_24h;
    0x00006fa8 mov r2, r7                                    |         r2 = r7;
    0x00006faa orrs r2, r5                                   |         r2 |= r5;
    0x00006fac ldr r5, [sp, 8]                               |         r5 = var_8h;
    0x00006fae ands r2, r5                                   |         r2 &= r5;
    0x00006fb0 ldr r5, [sp, 0x28]                            |         r5 = var_28h;
    0x00006fb2 ands r6, r5                                   |         r6 &= r5;
    0x00006fb4 mov r5, r7                                    |         r5 = r7;
    0x00006fb6 orrs r3, r6                                   |         r3 |= r6;
    0x00006fb8 ldr r6, [sp, 0x2c]                            |         r6 = var_2ch;
    0x00006fba adds.w r3, ip, r3                             |         r3 = ip + r3;
    0x00006fbe ldr r7, [sp, 4]                               |         r7 = var_4h;
    0x00006fc0 and.w r5, r5, r6                              |         r5 &= r6;
    0x00006fc4 orr.w r2, r2, r5                              |         r2 |= r5;
    0x00006fc8 adc.w r2, r4, r2                              |         __asm ("adc.w r2, r4, r2");
    0x00006fcc adds r3, r3, r1                               |         r3 += r1;
    0x00006fce str r3, [sp, 0x38]                            |         var_38h = r3;
    0x00006fd0 adc.w r3, r0, r2                              |         __asm ("adc.w r3, r0, r2");
    0x00006fd4 str r3, [sp, 0x3c]                            |         var_3ch = r3;
    0x00006fd6 ldr r3, [sp, 0x104]                           |         r3 = var_104h;
    0x00006fd8 cmp r7, r3                                    |         
                                                             |         if (r7 == r3) {
    0x00006fda beq.w 0x7928                                  |             goto label_0;
                                                             |         }
    0x00006fde ldr r2, [sp, 0xc8]                            |         r2 = var_c8h;
    0x00006fe0 ldr r3, [sp, 0x6c]                            |         r3 = var_6ch;
    0x00006fe2 ldr r5, [sp, 0x48]                            |         r5 = var_48h;
    0x00006fe4 ldr r1, [sp, 0x88]                            |         r1 = var_88h;
    0x00006fe6 adds r0, r2, r3                               |         r0 = r2 + r3;
    0x00006fe8 ldr r2, [sp, 0xcc]                            |         r2 = var_cch;
    0x00006fea ldr r7, [sp, 0x40]                            |         r7 = var_40h;
    0x00006fec lsl.w r3, r5, 3                               |         r3 = r5 << 3;
    0x00006ff0 ldr r6, [sp, 0xd4]                            |         r6 = var_d4h;
    0x00006ff2 adc.w r1, r2, r1                              |         __asm ("adc.w r1, r2, r1");
    0x00006ff6 lsrs r2, r5, 0x13                             |         r2 = r5 >> 0x13;
    0x00006ff8 orr.w r3, r3, r7, lsr 29                      |         r3 |= (r7 >> 29);
    0x00006ffc orr.w r2, r2, r7, lsl 13                      |         r2 |= (r7 << 13);
    0x00007000 lsrs r4, r7, 0x13                             |         r4 = r7 >> 0x13;
    0x00007002 eors r2, r3                                   |         r2 ^= r3;
    0x00007004 lsls r3, r7, 3                                |         r3 = r7 << 3;
    0x00007006 orr.w r4, r4, r5, lsl 13                      |         r4 |= (r5 << 13);
    0x0000700a eor.w r2, r2, r5, lsr 6                       |         r2 ^= (r5 >> 6);
    0x0000700e orr.w r3, r3, r5, lsr 29                      |         r3 |= (r5 >> 29);
    0x00007012 eors r3, r4                                   |         r3 ^= r4;
    0x00007014 lsrs r4, r7, 6                                |         r4 = r7 >> 6;
    0x00007016 ldr r7, [sp, 0xd0]                            |         r7 = var_d0h;
    0x00007018 orr.w r4, r4, r5, lsl 26                      |         r4 |= (r5 << 26);
    0x0000701c mov r5, r6                                    |         r5 = r6;
    0x0000701e eors r3, r4                                   |         r3 ^= r4;
    0x00007020 adds r3, r3, r0                               |         r3 += r0;
    0x00007022 lsr.w r4, r7, 8                               |         r4 = r7 >> 8;
    0x00007026 adc.w r2, r2, r1                              |         __asm ("adc.w r2, r2, r1");
    0x0000702a lsrs r1, r7, 1                                |         r1 = r7 >> 1;
    0x0000702c orr.w r4, r4, r6, lsl 24                      |         r4 |= (r6 << 24);
    0x00007030 lsrs r0, r6, 1                                |         r0 = r6 >> 1;
    0x00007032 orr.w r1, r1, r6, lsl 31                      |         r1 |= (r6 << 31);
    0x00007036 orr.w r0, r0, r7, lsl 31                      |         r0 |= (r7 << 31);
    0x0000703a eors r1, r4                                   |         r1 ^= r4;
    0x0000703c lsrs r4, r6, 8                                |         r4 = r6 >> 8;
    0x0000703e orr.w r4, r4, r7, lsl 24                      |         r4 |= (r7 << 24);
    0x00007042 eors r0, r4                                   |         r0 ^= r4;
    0x00007044 lsrs r4, r7, 7                                |         r4 = r7 >> 7;
    0x00007046 eor.w r0, r0, r6, lsr 7                       |         r0 ^= (r6 >> 7);
    0x0000704a orr.w r4, r4, r6, lsl 25                      |         r4 |= (r6 << 25);
    0x0000704e eors r1, r4                                   |         r1 ^= r4;
    0x00007050 adds r4, r3, r1                               |         r4 = r3 + r1;
    0x00007052 ldr r3, [sp, 0x90]                            |         r3 = var_90h;
    0x00007054 adc.w r6, r2, r0                              |         __asm ("adc.w r6, r2, r0");
    0x00007058 ldr r2, [sp, 0x8c]                            |         r2 = var_8ch;
    0x0000705a str r4, [sp, 0x5c]                            |         var_5ch = r4;
    0x0000705c str r6, [sp, 0x60]                            |         var_60h = r6;
    0x0000705e adds r1, r7, r2                               |         r1 = r7 + r2;
    0x00007060 lsr.w r7, fp, 0x13                            |         r7 = fp >> 0x13;
    0x00007064 adc.w r3, r5, r3                              |         __asm ("adc.w r3, r5, r3");
    0x00007068 ldr r5, [sp, 4]                               |         r5 = var_4h;
    0x0000706a lsl.w r2, fp, 3                               |         r2 = fp << 3;
    0x0000706e str.w r4, [r5, 0x80]                          |         __asm ("str.w r4, [r5, 0x80]");
    0x00007072 ldr r4, [sp, 0x20]                            |         r4 = var_20h;
    0x00007074 str.w r6, [r5, 0x84]                          |         __asm ("str.w r6, [r5, 0x84]");
    0x00007078 ldr r6, [sp, 0xd8]                            |         r6 = var_d8h;
    0x0000707a orr.w r2, r2, r4, lsr 29                      |         r2 |= (r4 >> 29);
    0x0000707e orr.w r7, r7, r4, lsl 13                      |         r7 |= (r4 << 13);
    0x00007082 lsrs r0, r4, 0x13                             |         r0 = r4 >> 0x13;
    0x00007084 eors r7, r2                                   |         r7 ^= r2;
    0x00007086 lsls r2, r4, 3                                |         r2 = r4 << 3;
    0x00007088 orr.w r0, r0, fp, lsl 13                      |         r0 |= (fp << 13);
    0x0000708c eor.w r7, r7, fp, lsr 6                       |         r7 ^= (fp >> 6);
    0x00007090 orr.w r2, r2, fp, lsr 29                      |         r2 |= (fp >> 29);
    0x00007094 eors r2, r0                                   |         r2 ^= r0;
    0x00007096 lsrs r0, r4, 6                                |         r0 = r4 >> 6;
    0x00007098 ldr r4, [sp, 0xdc]                            |         r4 = var_dch;
    0x0000709a orr.w r0, r0, fp, lsl 26                      |         r0 |= (fp << 26);
    0x0000709e eors r2, r0                                   |         r2 ^= r0;
    0x000070a0 lsrs r0, r6, 8                                |         r0 = r6 >> 8;
    0x000070a2 adds r2, r2, r1                               |         r2 += r1;
    0x000070a4 lsr.w r1, r4, 1                               |         r1 = r4 >> 1;
    0x000070a8 adc.w r7, r7, r3                              |         __asm ("adc.w r7, r7, r3");
    0x000070ac lsrs r3, r6, 1                                |         r3 = r6 >> 1;
    0x000070ae orr.w r0, r0, r4, lsl 24                      |         r0 |= (r4 << 24);
    0x000070b2 orr.w r1, r1, r6, lsl 31                      |         r1 |= (r6 << 31);
    0x000070b6 orr.w r3, r3, r4, lsl 31                      |         r3 |= (r4 << 31);
    0x000070ba eors r3, r0                                   |         r3 ^= r0;
    0x000070bc lsrs r0, r4, 8                                |         r0 = r4 >> 8;
    0x000070be orr.w r0, r0, r6, lsl 24                      |         r0 |= (r6 << 24);
    0x000070c2 eors r1, r0                                   |         r1 ^= r0;
    0x000070c4 lsrs r0, r6, 7                                |         r0 = r6 >> 7;
    0x000070c6 eor.w r1, r1, r4, lsr 7                       |         r1 ^= (r4 >> 7);
    0x000070ca orr.w r0, r0, r4, lsl 25                      |         r0 |= (r4 << 25);
    0x000070ce eors r3, r0                                   |         r3 ^= r0;
    0x000070d0 ldr r0, [sp, 0x94]                            |         r0 = var_94h;
    0x000070d2 adds r2, r2, r3                               |         r2 += r3;
    0x000070d4 ldr r3, [sp, 0x98]                            |         r3 = var_98h;
    0x000070d6 adc.w r7, r7, r1                              |         __asm ("adc.w r7, r7, r1");
    0x000070da str r2, [sp, 0x78]                            |         var_78h = r2;
    0x000070dc strd r2, r7, [r5, 0x88]                       |         __asm ("strd r2, r7, [r5, 0x88]");
    0x000070e0 adds r0, r6, r0                               |         r0 = r6 + r0;
    0x000070e2 ldr r2, [sp, 0x60]                            |         r2 = var_60h;
    0x000070e4 adc.w ip, r4, r3                              |         __asm ("adc.w ip, r4, r3");
    0x000070e8 ldr r1, [sp, 0x5c]                            |         r1 = var_5ch;
    0x000070ea lsrs r6, r2, 0x13                             |         r6 = r2 >> 0x13;
    0x000070ec lsls r3, r2, 3                                |         r3 = r2 << 3;
    0x000070ee lsrs r4, r1, 0x13                             |         r4 = r1 >> 0x13;
    0x000070f0 orr.w r3, r3, r1, lsr 29                      |         r3 |= (r1 >> 29);
    0x000070f4 orr.w r6, r6, r1, lsl 13                      |         r6 |= (r1 << 13);
    0x000070f8 orr.w r4, r4, r2, lsl 13                      |         r4 |= (r2 << 13);
    0x000070fc eors r6, r3                                   |         r6 ^= r3;
    0x000070fe lsls r3, r1, 3                                |         r3 = r1 << 3;
    0x00007100 eor.w r6, r6, r2, lsr 6                       |         r6 ^= (r2 >> 6);
    0x00007104 orr.w r3, r3, r2, lsr 29                      |         r3 |= (r2 >> 29);
    0x00007108 eors r3, r4                                   |         r3 ^= r4;
    0x0000710a lsrs r4, r1, 6                                |         r4 = r1 >> 6;
    0x0000710c orr.w r4, r4, r2, lsl 26                      |         r4 |= (r2 << 26);
    0x00007110 ldr r2, [sp, 0xe4]                            |         r2 = var_e4h;
    0x00007112 eors r3, r4                                   |         r3 ^= r4;
    0x00007114 adds r3, r3, r0                               |         r3 += r0;
    0x00007116 adc.w ip, r6, ip                              |         __asm ("adc.w ip, r6, ip");
    0x0000711a ldr r6, [sp, 0xe0]                            |         r6 = var_e0h;
    0x0000711c lsrs r0, r2, 1                                |         r0 = r2 >> 1;
    0x0000711e lsrs r1, r6, 1                                |         r1 = r6 >> 1;
    0x00007120 lsrs r4, r6, 8                                |         r4 = r6 >> 8;
    0x00007122 orr.w r0, r0, r6, lsl 31                      |         r0 |= (r6 << 31);
    0x00007126 orr.w r4, r4, r2, lsl 24                      |         r4 |= (r2 << 24);
    0x0000712a orr.w r1, r1, r2, lsl 31                      |         r1 |= (r2 << 31);
    0x0000712e eors r1, r4                                   |         r1 ^= r4;
    0x00007130 lsrs r4, r2, 8                                |         r4 = r2 >> 8;
    0x00007132 orr.w r4, r4, r6, lsl 24                      |         r4 |= (r6 << 24);
    0x00007136 eors r0, r4                                   |         r0 ^= r4;
    0x00007138 lsrs r4, r6, 7                                |         r4 = r6 >> 7;
    0x0000713a eor.w r0, r0, r2, lsr 7                       |         r0 ^= (r2 >> 7);
    0x0000713e orr.w r4, r4, r2, lsl 25                      |         r4 |= (r2 << 25);
    0x00007142 eors r1, r4                                   |         r1 ^= r4;
    0x00007144 adds r3, r3, r1                               |         r3 += r1;
    0x00007146 adc.w r1, ip, r0                              |         __asm ("adc.w r1, ip, r0");
    0x0000714a mov r0, r6                                    |         r0 = r6;
    0x0000714c ldr r6, [sp, 0x70]                            |         r6 = var_70h;
    0x0000714e str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00007150 mov r3, r1                                    |         r3 = r1;
    0x00007152 lsls r1, r7, 3                                |         r1 = r7 << 3;
    0x00007154 adds r4, r0, r6                               |         r4 = r0 + r6;
    0x00007156 ldr r0, [sp, 0x9c]                            |         r0 = var_9ch;
    0x00007158 adc.w r0, r2, r0                              |         __asm ("adc.w r0, r2, r0");
    0x0000715c ldr r2, [sp, 0x14]                            |         r2 = var_14h;
    0x0000715e str.w r2, [r5, 0x90]                          |         __asm ("str.w r2, [r5, 0x90]");
    0x00007162 str r3, [sp, 0x7c]                            |         var_7ch = r3;
    0x00007164 ldr r6, [sp, 0x78]                            |         r6 = var_78h;
    0x00007166 str.w r3, [r5, 0x94]                          |         __asm ("str.w r3, [r5, 0x94]");
    0x0000716a lsrs r5, r7, 0x13                             |         r5 = r7 >> 0x13;
    0x0000716c ldr r2, [sp, 0xe8]                            |         r2 = var_e8h;
    0x0000716e orr.w r1, r1, r6, lsr 29                      |         r1 |= (r6 >> 29);
    0x00007172 orr.w r5, r5, r6, lsl 13                      |         r5 |= (r6 << 13);
    0x00007176 lsr.w ip, r6, 0x13                            |         
    0x0000717a eors r5, r1                                   |         r5 ^= r1;
    0x0000717c lsls r1, r6, 3                                |         r1 = r6 << 3;
    0x0000717e orr.w ip, ip, r7, lsl 13                      |         
    0x00007182 eor.w r5, r5, r7, lsr 6                       |         r5 ^= (r7 >> 6);
    0x00007186 orr.w r1, r1, r7, lsr 29                      |         r1 |= (r7 >> 29);
    0x0000718a mov r3, r2                                    |         r3 = r2;
    0x0000718c eor.w r1, ip, r1                              |         r1 = ip ^ r1;
    0x00007190 lsr.w ip, r6, 6                               |         
    0x00007194 ldr r6, [sp, 0xec]                            |         r6 = var_ech;
    0x00007196 orr.w ip, ip, r7, lsl 26                      |         
    0x0000719a eor.w r1, r1, ip                              |         r1 ^= ip;
    0x0000719e lsr.w ip, r2, 8                               |         
    0x000071a2 adds r1, r1, r4                               |         r1 += r4;
    0x000071a4 lsr.w r4, r6, 1                               |         r4 = r6 >> 1;
    0x000071a8 adc.w r5, r5, r0                              |         __asm ("adc.w r5, r5, r0");
    0x000071ac lsrs r0, r2, 1                                |         r0 = r2 >> 1;
    0x000071ae orr.w ip, ip, r6, lsl 24                      |         
    0x000071b2 orr.w r4, r4, r2, lsl 31                      |         r4 |= (r2 << 31);
    0x000071b6 orr.w r0, r0, r6, lsl 31                      |         r0 |= (r6 << 31);
    0x000071ba eor.w r0, r0, ip                              |         r0 ^= ip;
    0x000071be lsr.w ip, r6, 8                               |         
    0x000071c2 orr.w ip, ip, r2, lsl 24                      |         
    0x000071c6 eor.w r4, r4, ip                              |         r4 ^= ip;
    0x000071ca lsr.w ip, r2, 7                               |         
    0x000071ce eor.w r4, r4, r6, lsr 7                       |         r4 ^= (r6 >> 7);
    0x000071d2 orr.w ip, ip, r6, lsl 25                      |         
    0x000071d6 eor.w r0, r0, ip                              |         r0 ^= ip;
    0x000071da adds r0, r1, r0                               |         r0 = r1 + r0;
    0x000071dc ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x000071de adc.w r5, r5, r4                              |         __asm ("adc.w r5, r5, r4");
    0x000071e2 mov r2, r0                                    |         r2 = r0;
    0x000071e4 ldr r0, [sp, 0x74]                            |         r0 = var_74h;
    0x000071e6 strd r2, r5, [r1, 0x98]                       |         __asm ("strd r2, r5, [r1, 0x98]");
    0x000071ea str r2, [sp, 0x80]                            |         var_80h = r2;
    0x000071ec ldr r2, [sp, 0x7c]                            |         r2 = var_7ch;
    0x000071ee adds.w ip, r3, r0                             |         
    0x000071f2 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x000071f4 ldr r0, [sp, 0xa0]                            |         r0 = var_a0h;
    0x000071f6 lsr.w r4, r2, 0x13                            |         r4 = r2 >> 0x13;
    0x000071fa lsl.w r1, r2, 3                               |         r1 = r2 << 3;
    0x000071fe lsr.w lr, r3, 0x13                            |         lr = r3 >> 0x13;
    0x00007202 orr.w r1, r1, r3, lsr 29                      |         r1 |= (r3 >> 29);
    0x00007206 orr.w r4, r4, r3, lsl 13                      |         r4 |= (r3 << 13);
    0x0000720a orr.w lr, lr, r2, lsl 13                      |         lr |= (r2 << 13);
    0x0000720e eor.w r4, r4, r1                              |         r4 ^= r1;
    0x00007212 lsl.w r1, r3, 3                               |         r1 = r3 << 3;
    0x00007216 adc.w r0, r6, r0                              |         __asm ("adc.w r0, r6, r0");
    0x0000721a ldr r6, [sp, 0xf0]                            |         r6 = var_f0h;
    0x0000721c orr.w r1, r1, r2, lsr 29                      |         r1 |= (r2 >> 29);
    0x00007220 eor.w r4, r4, r2, lsr 6                       |         r4 ^= (r2 >> 6);
    0x00007224 eor.w r1, lr, r1                              |         r1 = lr ^ r1;
    0x00007228 lsr.w lr, r3, 6                               |         lr = r3 >> 6;
    0x0000722c orr.w lr, lr, r2, lsl 26                      |         lr |= (r2 << 26);
    0x00007230 ldr r2, [sp, 0xf4]                            |         r2 = var_f4h;
    0x00007232 eor.w r1, r1, lr                              |         r1 ^= lr;
    0x00007236 lsr.w lr, r6, 8                               |         lr = r6 >> 8;
    0x0000723a adds.w r1, r1, ip                             |         r1 += ip;
    0x0000723e adc.w r4, r4, r0                              |         __asm ("adc.w r4, r4, r0");
    0x00007242 lsrs r0, r6, 1                                |         r0 = r6 >> 1;
    0x00007244 orr.w lr, lr, r2, lsl 24                      |         lr |= (r2 << 24);
    0x00007248 lsr.w ip, r2, 1                               |         
    0x0000724c orr.w r0, r0, r2, lsl 31                      |         r0 |= (r2 << 31);
    0x00007250 orr.w ip, ip, r6, lsl 31                      |         
    0x00007254 eor.w r0, r0, lr                              |         r0 ^= lr;
    0x00007258 lsr.w lr, r2, 8                               |         lr = r2 >> 8;
    0x0000725c orr.w lr, lr, r6, lsl 24                      |         lr |= (r6 << 24);
    0x00007260 eor.w ip, ip, lr                              |         
    0x00007264 lsr.w lr, r6, 7                               |         lr = r6 >> 7;
    0x00007268 eor.w ip, ip, r2, lsr 7                       |         
    0x0000726c orr.w lr, lr, r2, lsl 25                      |         lr |= (r2 << 25);
    0x00007270 eor.w r0, r0, lr                              |         r0 ^= lr;
    0x00007274 adds r0, r1, r0                               |         r0 = r1 + r0;
    0x00007276 mov r3, r0                                    |         r3 = r0;
    0x00007278 ldr r0, [sp, 0x40]                            |         r0 = var_40h;
    0x0000727a adc.w r1, r4, ip                              |         __asm ("adc.w r1, r4, ip");
    0x0000727e ldr r4, [sp, 0xfc]                            |         r4 = var_fch;
    0x00007280 str r1, [sp, 0x64]                            |         var_64h = r1;
    0x00007282 lsr.w sb, r3, 0x13                            |         sb = r3 >> 0x13;
    0x00007286 adds.w ip, r6, r0                             |         
    0x0000728a ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x0000728c mov r0, r2                                    |         r0 = r2;
    0x0000728e ldr r2, [sp, 0x48]                            |         r2 = var_48h;
    0x00007290 ldr r6, [sp, 0x80]                            |         r6 = var_80h;
    0x00007292 str.w r3, [r1, 0xa0]                          |         __asm ("str.w r3, [r1, 0xa0]");
    0x00007296 adc.w lr, r0, r2                              |         __asm ("adc.w lr, r0, r2");
    0x0000729a ldr r2, [sp, 0x64]                            |         r2 = var_64h;
    0x0000729c lsrs r0, r5, 0x13                             |         r0 = r5 >> 0x13;
    0x0000729e str r3, [sp, 0xa4]                            |         var_a4h = r3;
    0x000072a0 lsr.w r8, r6, 0x13                            |         r8 = r6 >> 0x13;
    0x000072a4 str.w r2, [r1, 0xa4]                          |         __asm ("str.w r2, [r1, 0xa4]");
    0x000072a8 lsls r1, r5, 3                                |         r1 = r5 << 3;
    0x000072aa orr.w r0, r0, r6, lsl 13                      |         r0 |= (r6 << 13);
    0x000072ae orr.w r8, r8, r5, lsl 13                      |         r8 |= (r5 << 13);
    0x000072b2 orr.w r1, r1, r6, lsr 29                      |         r1 |= (r6 >> 29);
    0x000072b6 ldr r2, [sp, 0xf8]                            |         r2 = var_f8h;
    0x000072b8 eors r0, r1                                   |         r0 ^= r1;
    0x000072ba lsls r1, r6, 3                                |         r1 = r6 << 3;
    0x000072bc eor.w r0, r0, r5, lsr 6                       |         r0 ^= (r5 >> 6);
    0x000072c0 orr.w r1, r1, r5, lsr 29                      |         r1 |= (r5 >> 29);
    0x000072c4 eor.w r1, r8, r1                              |         r1 = r8 ^ r1;
    0x000072c8 lsr.w r8, r6, 6                               |         r8 = r6 >> 6;
    0x000072cc ldr r6, [sp, 0x68]                            |         r6 = var_68h;
    0x000072ce orr.w r8, r8, r5, lsl 26                      |         r8 |= (r5 << 26);
    0x000072d2 eor.w r1, r1, r8                              |         r1 ^= r8;
    0x000072d6 lsr.w r8, r2, 8                               |         r8 = r2 >> 8;
    0x000072da adds.w r1, r1, ip                             |         r1 += ip;
    0x000072de lsr.w ip, r2, 1                               |         
    0x000072e2 orr.w r8, r8, r4, lsl 24                      |         r8 |= (r4 << 24);
    0x000072e6 adc.w r0, r0, lr                              |         __asm ("adc.w r0, r0, lr");
    0x000072ea orr.w ip, ip, r4, lsl 31                      |         
    0x000072ee lsr.w lr, r4, 1                               |         lr = r4 >> 1;
    0x000072f2 eor.w ip, ip, r8                              |         
    0x000072f6 lsr.w r8, r4, 8                               |         r8 = r4 >> 8;
    0x000072fa orr.w lr, lr, r2, lsl 31                      |         lr |= (r2 << 31);
    0x000072fe orr.w r8, r8, r2, lsl 24                      |         r8 |= (r2 << 24);
    0x00007302 eor.w lr, lr, r8                              |         lr ^= r8;
    0x00007306 lsr.w r8, r2, 7                               |         r8 = r2 >> 7;
    0x0000730a eor.w lr, lr, r4, lsr 7                       |         lr ^= (r4 >> 7);
    0x0000730e orr.w r8, r8, r4, lsl 25                      |         r8 |= (r4 << 25);
    0x00007312 eor.w ip, ip, r8                              |         
    0x00007316 adds.w ip, r1, ip                             |         
    0x0000731a mov r1, r2                                    |         r1 = r2;
    0x0000731c ldr r2, [sp, 0x20]                            |         r2 = var_20h;
    0x0000731e adc.w r0, r0, lr                              |         __asm ("adc.w r0, r0, lr");
    0x00007322 adds.w r8, r1, r2                             |         r8 = r1 + r2;
    0x00007326 ldr r2, [sp, 0x64]                            |         r2 = var_64h;
    0x00007328 ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x0000732a adc.w lr, r4, fp                              |         __asm ("adc.w lr, r4, fp");
    0x0000732e mov r4, ip                                    |         r4 = ip;
    0x00007330 lsr.w sl, r4, 0x13                            |         sl = r4 >> 0x13;
    0x00007334 str.w ip, [r1, 0xa8]                          |         __asm ("str.w ip, [r1, 0xa8]");
    0x00007338 lsl.w ip, r2, 3                               |         
    0x0000733c str.w r0, [r1, 0xac]                          |         __asm ("str.w r0, [r1, 0xac]");
    0x00007340 lsrs r1, r2, 0x13                             |         r1 = r2 >> 0x13;
    0x00007342 orr.w ip, ip, r3, lsr 29                      |         
    0x00007346 orr.w sb, sb, r2, lsl 13                      |         sb |= (r2 << 13);
    0x0000734a orr.w r1, r1, r3, lsl 13                      |         r1 |= (r3 << 13);
    0x0000734e orr.w sl, sl, r0, lsl 13                      |         sl |= (r0 << 13);
    0x00007352 eor.w r1, r1, ip                              |         r1 ^= ip;
    0x00007356 lsl.w ip, r3, 3                               |         
    0x0000735a eor.w r1, r1, r2, lsr 6                       |         r1 ^= (r2 >> 6);
    0x0000735e orr.w ip, ip, r2, lsr 29                      |         
    0x00007362 eor.w ip, sb, ip                              |         
    0x00007366 lsr.w sb, r3, 6                               |         sb = r3 >> 6;
    0x0000736a orr.w sb, sb, r2, lsl 26                      |         sb |= (r2 << 26);
    0x0000736e ldr r2, [sp, 0x58]                            |         r2 = var_58h;
    0x00007370 eor.w ip, ip, sb                              |         
    0x00007374 adds.w ip, ip, r8                             |         
    0x00007378 lsr.w r8, r6, 1                               |         r8 = r6 >> 1;
    0x0000737c adc.w r1, r1, lr                              |         __asm ("adc.w r1, r1, lr");
    0x00007380 lsr.w sb, r2, 8                               |         sb = r2 >> 8;
    0x00007384 lsr.w lr, r2, 1                               |         lr = r2 >> 1;
    0x00007388 orr.w r8, r8, r2, lsl 31                      |         r8 |= (r2 << 31);
    0x0000738c orr.w sb, sb, r6, lsl 24                      |         sb |= (r6 << 24);
    0x00007390 orr.w lr, lr, r6, lsl 31                      |         lr |= (r6 << 31);
    0x00007394 eor.w lr, lr, sb                              |         lr ^= sb;
    0x00007398 lsr.w sb, r6, 8                               |         sb = r6 >> 8;
    0x0000739c orr.w sb, sb, r2, lsl 24                      |         sb |= (r2 << 24);
    0x000073a0 eor.w r8, r8, sb                              |         r8 ^= sb;
    0x000073a4 lsr.w sb, r2, 7                               |         sb = r2 >> 7;
    0x000073a8 eor.w r8, r8, r6, lsr 7                       |         r8 ^= (r6 >> 7);
    0x000073ac orr.w sb, sb, r6, lsl 25                      |         sb |= (r6 << 25);
    0x000073b0 eor.w lr, lr, sb                              |         lr ^= sb;
    0x000073b4 adds.w ip, ip, lr                             |         
    0x000073b8 lsl.w lr, r0, 3                               |         lr = r0 << 3;
    0x000073bc adc.w r1, r1, r8                              |         __asm ("adc.w r1, r1, r8");
    0x000073c0 str r1, [sp, 0x68]                            |         var_68h = r1;
    0x000073c2 orr.w lr, lr, r4, lsr 29                      |         lr |= (r4 >> 29);
    0x000073c6 ldrd r2, r1, [sp, 0x58]                       |         __asm ("ldrd r2, r1, [var_58h]");
    0x000073ca str r4, [sp, 0xa8]                            |         var_a8h = r4;
    0x000073cc ldr r3, [sp, 0x78]                            |         r3 = var_78h;
    0x000073ce adds.w sb, r2, r1                             |         sb = r2 + r1;
    0x000073d2 ldr r2, [sp, 0x60]                            |         r2 = var_60h;
    0x000073d4 ldr r1, [sp, 0x68]                            |         r1 = var_68h;
    0x000073d6 adc.w r8, r6, r2                              |         __asm ("adc.w r8, r6, r2");
    0x000073da ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x000073dc mov r6, ip                                    |         r6 = ip;
    0x000073de str r6, [sp, 0x78]                            |         var_78h = r6;
    0x000073e0 str.w ip, [r2, 0xb0]                          |         __asm ("str.w ip, [r2, 0xb0]");
    0x000073e4 lsr.w ip, r0, 0x13                            |         
    0x000073e8 str.w r1, [r2, 0xb4]                          |         __asm ("str.w r1, [r2, 0xb4]");
    0x000073ec orr.w ip, ip, r4, lsl 13                      |         
    0x000073f0 ldr r2, [sp, 0x84]                            |         r2 = var_84h;
    0x000073f2 ldr r1, [sp, 0x68]                            |         r1 = var_68h;
    0x000073f4 eor.w ip, ip, lr                              |         
    0x000073f8 lsl.w lr, r4, 3                               |         lr = r4 << 3;
    0x000073fc eor.w ip, ip, r0, lsr 6                       |         
    0x00007400 orr.w lr, lr, r0, lsr 29                      |         lr |= (r0 >> 29);
    0x00007404 eor.w lr, sl, lr                              |         lr = sl ^ lr;
    0x00007408 lsr.w sl, r4, 6                               |         sl = r4 >> 6;
    0x0000740c ldr r4, [sp, 0x100]                           |         r4 = var_100h;
    0x0000740e orr.w sl, sl, r0, lsl 26                      |         sl |= (r0 << 26);
    0x00007412 eor.w lr, lr, sl                              |         lr ^= sl;
    0x00007416 lsr.w sl, r2, 8                               |         sl = r2 >> 8;
    0x0000741a adds.w lr, lr, sb                             |         lr += sb;
    0x0000741e adc.w sb, ip, r8                              |         __asm ("adc.w sb, ip, r8");
    0x00007422 lsr.w r8, r2, 1                               |         r8 = r2 >> 1;
    0x00007426 orr.w sl, sl, r4, lsl 24                      |         sl |= (r4 << 24);
    0x0000742a lsr.w ip, r4, 1                               |         
    0x0000742e orr.w r8, r8, r4, lsl 31                      |         r8 |= (r4 << 31);
    0x00007432 orr.w ip, ip, r2, lsl 31                      |         
    0x00007436 eor.w r8, r8, sl                              |         r8 ^= sl;
    0x0000743a lsr.w sl, r4, 8                               |         sl = r4 >> 8;
    0x0000743e orr.w sl, sl, r2, lsl 24                      |         sl |= (r2 << 24);
    0x00007442 eor.w ip, ip, sl                              |         
    0x00007446 lsr.w sl, r2, 7                               |         sl = r2 >> 7;
    0x0000744a eor.w ip, ip, r4, lsr 7                       |         
    0x0000744e orr.w sl, sl, r4, lsl 25                      |         sl |= (r4 << 25);
    0x00007452 eor.w r8, r8, sl                              |         r8 ^= sl;
    0x00007456 lsr.w sl, r6, 0x13                            |         sl = r6 >> 0x13;
    0x0000745a adds.w lr, lr, r8                             |         lr += r8;
    0x0000745e lsr.w r8, r1, 0x13                            |         r8 = r1 >> 0x13;
    0x00007462 adc.w ip, sb, ip                              |         __asm ("adc.w ip, sb, ip");
    0x00007466 str.w lr, [sp, 0x58]                          |         __asm ("str.w lr, [var_58h]");
    0x0000746a adds.w sb, r2, r3                             |         sb = r2 + r3;
    0x0000746e ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00007470 orr.w r8, r8, r6, lsl 13                      |         r8 |= (r6 << 13);
    0x00007472 subs r0, 0x46                                 |         r0 -= 0x46;
    0x00007474 orr.w sl, sl, r1, lsl 13                      |         sl |= (r1 << 13);
    0x00007478 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x0000747a strd lr, ip, [r2, 0xb8]                       |         __asm ("strd lr, ip, [r2, 0xb8]");
    0x0000747e lsl.w r2, r1, 3                               |         r2 = r1 << 3;
    0x00007482 lsl.w lr, r6, 3                               |         lr = r6 << 3;
    0x00007486 adc.w r7, r4, r7                              |         __asm ("adc.w r7, r4, r7");
    0x0000748a orr.w r2, r2, r6, lsr 29                      |         r2 |= (r6 >> 29);
    0x0000748e orr.w lr, lr, r1, lsr 29                      |         lr |= (r1 >> 29);
    0x00007492 eor.w r8, r8, r2                              |         r8 ^= r2;
    0x00007496 lsrs r2, r6, 6                                |         r2 = r6 >> 6;
    0x00007498 ldr r6, [sp, 0x6c]                            |         r6 = var_6ch;
    0x0000749a eor.w lr, sl, lr                              |         lr = sl ^ lr;
    0x0000749e orr.w r2, r2, r1, lsl 26                      |         r2 |= (r1 << 26);
    0x000074a2 eor.w r8, r8, r1, lsr 6                       |         r8 ^= (r1 >> 6);
    0x000074a6 ldr r1, [sp, 0x88]                            |         r1 = var_88h;
    0x000074a8 eor.w r2, lr, r2                              |         r2 = lr ^ r2;
    0x000074ac adds.w r2, r2, sb                             |         r2 += sb;
    0x000074b0 lsr.w sb, r6, 8                               |         sb = r6 >> 8;
    0x000074b4 adc.w r8, r8, r7                              |         __asm ("adc.w r8, r8, r7");
    0x000074b8 lsrs r7, r6, 1                                |         r7 = r6 >> 1;
    0x000074ba orr.w sb, sb, r1, lsl 24                      |         sb |= (r1 << 24);
    0x000074be lsr.w lr, r1, 1                               |         lr = r1 >> 1;
    0x000074c2 orr.w r7, r7, r1, lsl 31                      |         r7 |= (r1 << 31);
    0x000074c6 orr.w lr, lr, r6, lsl 31                      |         lr |= (r6 << 31);
    0x000074ca eor.w r7, r7, sb                              |         r7 ^= sb;
    0x000074ce lsr.w sb, r1, 8                               |         sb = r1 >> 8;
    0x000074d2 orr.w sb, sb, r6, lsl 24                      |         sb |= (r6 << 24);
    0x000074d6 eor.w lr, lr, sb                              |         lr ^= sb;
    0x000074da lsr.w sb, r6, 7                               |         sb = r6 >> 7;
    0x000074de eor.w lr, lr, r1, lsr 7                       |         lr ^= (r1 >> 7);
    0x000074e2 orr.w sb, sb, r1, lsl 25                      |         sb |= (r1 << 25);
    0x000074e6 eor.w r7, r7, sb                              |         r7 ^= sb;
    0x000074ea adds r4, r2, r7                               |         r4 = r2 + r7;
    0x000074ec ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x000074ee adc.w r7, r8, lr                              |         __asm ("adc.w r7, r8, lr");
    0x000074f2 adds r3, r6, r3                               |         r3 = r6 + r3;
    0x000074f4 ldr r6, [sp, 0x7c]                            |         r6 = var_7ch;
    0x000074f6 lsr.w lr, ip, 0x13                            |         lr = ip >> 0x13;
    0x000074fa str.w r4, [r2, 0xc0]                          |         __asm ("str.w r4, [r2, 0xc0]");
    0x000074fe lsr.w sb, r4, 0x13                            |         sb = r4 >> 0x13;
    0x00007502 str.w r7, [r2, 0xc4]                          |         __asm ("str.w r7, [r2, 0xc4]");
    0x00007506 lsl.w r2, ip, 3                               |         r2 = ip << 3;
    0x0000750a adc.w r6, r1, r6                              |         __asm ("adc.w r6, r1, r6");
    0x0000750e ldr r1, [sp, 0x58]                            |         r1 = var_58h;
    0x00007510 str r7, [sp, 0x14]                            |         var_14h = r7;
    0x00007512 ldr r7, [sp, 0x8c]                            |         r7 = var_8ch;
    0x00007514 orr.w r2, r2, r1, lsr 29                      |         r2 |= (r1 >> 29);
    0x00007518 orr.w lr, lr, r1, lsl 13                      |         lr |= (r1 << 13);
    0x0000751c lsr.w r8, r1, 0x13                            |         r8 = r1 >> 0x13;
    0x00007520 eor.w lr, lr, r2                              |         lr ^= r2;
    0x00007524 lsls r2, r1, 3                                |         r2 = r1 << 3;
    0x00007526 orr.w r8, r8, ip, lsl 13                      |         r8 |= (ip << 13);
    0x0000752a eor.w lr, lr, ip, lsr 6                       |         lr ^= (ip >> 6);
    0x0000752e orr.w r2, r2, ip, lsr 29                      |         r2 |= (ip >> 29);
    0x00007532 eor.w r2, r8, r2                              |         r2 = r8 ^ r2;
    0x00007536 lsr.w r8, r1, 6                               |         r8 = r1 >> 6;
    0x0000753a ldr r1, [sp, 0x90]                            |         r1 = var_90h;
    0x0000753c orr.w r8, r8, ip, lsl 26                      |         r8 |= (ip << 26);
    0x00007540 eor.w r2, r2, r8                              |         r2 ^= r8;
    0x00007544 lsr.w r8, r7, 1                               |         r8 = r7 >> 1;
    0x00007548 adds r3, r2, r3                               |         r3 = r2 + r3;
    0x0000754a lsr.w r2, r1, 1                               |         r2 = r1 >> 1;
    0x0000754e adc.w r6, lr, r6                              |         __asm ("adc.w r6, lr, r6");
    0x00007552 lsr.w lr, r7, 8                               |         lr = r7 >> 8;
    0x00007556 orr.w r8, r8, r1, lsl 31                      |         r8 |= (r1 << 31);
    0x0000755a orr.w r2, r2, r7, lsl 31                      |         r2 |= (r7 << 31);
    0x0000755e orr.w lr, lr, r1, lsl 24                      |         lr |= (r1 << 24);
    0x00007562 eor.w r8, r8, lr                              |         r8 ^= lr;
    0x00007566 lsr.w lr, r1, 8                               |         lr = r1 >> 8;
    0x0000756a orr.w lr, lr, r7, lsl 24                      |         lr |= (r7 << 24);
    0x0000756e eor.w r2, r2, lr                              |         r2 ^= lr;
    0x00007572 lsr.w lr, r7, 7                               |         lr = r7 >> 7;
    0x00007576 eor.w r2, r2, r1, lsr 7                       |         r2 ^= (r1 >> 7);
    0x0000757a orr.w lr, lr, r1, lsl 25                      |         lr |= (r1 << 25);
    0x0000757e eor.w r8, r8, lr                              |         r8 ^= lr;
    0x00007582 adds.w r3, r3, r8                             |         r3 += r8;
    0x00007586 adc.w r6, r6, r2                              |         __asm ("adc.w r6, r6, r2");
    0x0000758a ldr r2, [sp, 0x80]                            |         r2 = var_80h;
    0x0000758c lsl.w sl, r6, 3                               |         sl = r6 << 3;
    0x00007590 adds.w r8, r7, r2                             |         r8 = r7 + r2;
    0x00007594 ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00007596 adc.w r5, r1, r5                              |         __asm ("adc.w r5, r1, r5");
    0x0000759a orr.w sl, sl, r3, lsr 29                      |         sl |= (r3 >> 29);
    0x0000759e strd r3, r6, [r2, 0xc8]                       |         __asm ("strd r3, r6, [r2, 0xc8]");
    0x000075a2 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x000075a4 ldr r7, [sp, 0x94]                            |         r7 = var_94h;
    0x000075a6 str r4, [sp, 0x6c]                            |         var_6ch = r4;
    0x000075a8 lsr.w lr, r1, 0x13                            |         lr = r1 >> 0x13;
    0x000075ac lsls r2, r1, 3                                |         r2 = r1 << 3;
    0x000075ae orr.w sb, sb, r1, lsl 13                      |         sb |= (r1 << 13);
    0x000075b2 orr.w r2, r2, r4, lsr 29                      |         r2 |= (r4 >> 29);
    0x000075b6 orr.w lr, lr, r4, lsl 13                      |         lr |= (r4 << 13);
    0x000075ba eor.w lr, lr, r2                              |         lr ^= r2;
    0x000075be lsls r2, r4, 3                                |         r2 = r4 << 3;
    0x000075c0 eor.w lr, lr, r1, lsr 6                       |         lr ^= (r1 >> 6);
    0x000075c4 orr.w r2, r2, r1, lsr 29                      |         r2 |= (r1 >> 29);
    0x000075c8 eor.w r2, sb, r2                              |         r2 = sb ^ r2;
    0x000075cc lsr.w sb, r4, 6                               |         sb = r4 >> 6;
    0x000075d0 ldr r4, [sp, 0xa4]                            |         r4 = var_a4h;
    0x000075d2 orr.w sb, sb, r1, lsl 26                      |         sb |= (r1 << 26);
    0x000075d6 ldr r1, [sp, 0x98]                            |         r1 = var_98h;
    0x000075d8 eor.w r2, r2, sb                              |         r2 ^= sb;
    0x000075dc lsr.w sb, r7, 8                               |         sb = r7 >> 8;
    0x000075e0 adds.w r8, r2, r8                             |         r8 = r2 + r8;
    0x000075e4 lsr.w r2, r7, 1                               |         r2 = r7 >> 1;
    0x000075e8 orr.w sb, sb, r1, lsl 24                      |         sb |= (r1 << 24);
    0x000075ec adc.w lr, lr, r5                              |         __asm ("adc.w lr, lr, r5");
    0x000075f0 orr.w r2, r2, r1, lsl 31                      |         r2 |= (r1 << 31);
    0x000075f4 lsrs r5, r1, 1                                |         r5 = r1 >> 1;
    0x000075f6 eor.w r2, r2, sb                              |         r2 ^= sb;
    0x000075fa lsr.w sb, r1, 8                               |         sb = r1 >> 8;
    0x000075fe orr.w r5, r5, r7, lsl 31                      |         r5 |= (r7 << 31);
    0x00007602 orr.w sb, sb, r7, lsl 24                      |         sb |= (r7 << 24);
    0x00007606 eor.w r5, r5, sb                              |         r5 ^= sb;
    0x0000760a lsr.w sb, r7, 7                               |         sb = r7 >> 7;
    0x0000760e eor.w r5, r5, r1, lsr 7                       |         r5 ^= (r1 >> 7);
    0x00007612 orr.w sb, sb, r1, lsl 25                      |         sb |= (r1 << 25);
    0x00007616 eor.w r2, r2, sb                              |         r2 ^= sb;
    0x0000761a adds.w r2, r8, r2                             |         r2 = r8 + r2;
    0x0000761e lsr.w r8, r6, 0x13                            |         r8 = r6 >> 0x13;
    0x00007622 adc.w r5, lr, r5                              |         __asm ("adc.w r5, lr, r5");
    0x00007626 lsr.w lr, r3, 0x13                            |         lr = r3 >> 0x13;
    0x0000762a adds.w sb, r7, r4                             |         sb = r7 + r4;
    0x0000762e ldr r4, [sp, 0x64]                            |         r4 = var_64h;
    0x00007630 orr.w r8, r8, r3, lsl 13                      |         r8 |= (r3 << 13);
    0x00007634 orr.w lr, lr, r6, lsl 13                      |         lr |= (r6 << 13);
    0x00007638 ldr r7, [sp, 0x9c]                            |         r7 = var_9ch;
    0x0000763a adc.w r4, r1, r4                              |         __asm ("adc.w r4, r1, r4");
    0x0000763e ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x00007640 eor.w r8, r8, sl                              |         r8 ^= sl;
    0x00007644 lsl.w sl, r3, 3                               |         sl = r3 << 3;
    0x00007648 lsrs r3, r3, 6                                |         r3 >>= 6;
    0x0000764a eor.w r8, r8, r6, lsr 6                       |         r8 ^= (r6 >> 6);
    0x0000764e strd r2, r5, [r1, 0xd0]                       |         __asm ("strd r2, r5, [r1, 0xd0]");
    0x00007652 orr.w sl, sl, r6, lsr 29                      |         sl |= (r6 >> 29);
    0x00007656 ldr r1, [sp, 0x70]                            |         r1 = var_70h;
    0x00007658 orr.w r3, r3, r6, lsl 26                      |         r3 |= (r6 << 26);
    0x0000765c eor.w lr, lr, sl                              |         lr ^= sl;
    0x00007660 eor.w lr, lr, r3                              |         lr ^= r3;
    0x00007664 adds.w lr, lr, sb                             |         lr += sb;
    0x00007668 lsl.w sb, r5, 3                               |         sb = r5 << 3;
    0x0000766c lsr.w r3, r1, 1                               |         r3 = r1 >> 1;
    0x00007670 lsr.w r6, r1, 8                               |         r6 = r1 >> 8;
    0x00007674 orr.w sb, sb, r2, lsr 29                      |         sb |= (r2 >> 29);
    0x00007678 orr.w r6, r6, r7, lsl 24                      |         r6 |= (r7 << 24);
    0x0000767c orr.w r3, r3, r7, lsl 31                      |         r3 |= (r7 << 31);
    0x00007680 adc.w r8, r8, r4                              |         __asm ("adc.w r8, r8, r4");
    0x00007684 eors r3, r6                                   |         r3 ^= r6;
    0x00007686 lsrs r4, r7, 1                                |         r4 = r7 >> 1;
    0x00007688 lsrs r6, r7, 8                                |         r6 = r7 >> 8;
    0x0000768a orr.w r4, r4, r1, lsl 31                      |         r4 |= (r1 << 31);
    0x0000768e orr.w r6, r6, r1, lsl 24                      |         r6 |= (r1 << 24);
    0x00007692 eors r4, r6                                   |         r4 ^= r6;
    0x00007694 lsrs r6, r1, 7                                |         r6 = r1 >> 7;
    0x00007696 eor.w r4, r4, r7, lsr 7                       |         r4 ^= (r7 >> 7);
    0x0000769a orr.w r6, r6, r7, lsl 25                      |         r6 |= (r7 << 25);
    0x0000769e eors r3, r6                                   |         r3 ^= r6;
    0x000076a0 mov r6, r1                                    |         r6 = r1;
    0x000076a2 ldr r1, [sp, 0xa8]                            |         r1 = var_a8h;
    0x000076a4 adds.w r3, lr, r3                             |         r3 = lr + r3;
    0x000076a8 lsr.w lr, r5, 0x13                            |         lr = r5 >> 0x13;
    0x000076ac adc.w r4, r8, r4                              |         __asm ("adc.w r4, r8, r4");
    0x000076b0 orr.w lr, lr, r2, lsl 13                      |         lr |= (r2 << 13);
    0x000076b4 adds.w r8, r6, r1                             |         r8 = r6 + r1;
    0x000076b8 ldr r1, [sp, 4]                               |         r1 = var_4h;
    0x000076ba lsr.w r6, r2, 0x13                            |         r6 = r2 >> 0x13;
    0x000076be eor.w lr, lr, sb                              |         lr ^= sb;
    0x000076c2 lsl.w sb, r2, 3                               |         sb = r2 << 3;
    0x000076c6 lsr.w r2, r2, 6                               |         r2 >>= 6;
    0x000076ca orr.w r6, r6, r5, lsl 13                      |         r6 |= (r5 << 13);
    0x000076ce strd r3, r4, [r1, 0xd8]                       |         __asm ("strd r3, r4, [r1, 0xd8]");
    0x000076d2 orr.w sb, sb, r5, lsr 29                      |         sb |= (r5 >> 29);
    0x000076d6 ldr r1, [sp, 0x74]                            |         r1 = var_74h;
    0x000076d8 adc.w r0, r7, r0                              |         __asm ("adc.w r0, r7, r0");
    0x000076dc orr.w r2, r2, r5, lsl 26                      |         r2 |= (r5 << 26);
    0x000076e0 ldr r7, [sp, 0xa0]                            |         r7 = var_a0h;
    0x000076e2 eor.w r6, r6, sb                              |         r6 ^= sb;
    0x000076e6 eor.w lr, lr, r5, lsr 6                       |         lr ^= (r5 >> 6);
    0x000076ea eors r6, r2                                   |         r6 ^= r2;
    0x000076ec lsrs r5, r1, 8                                |         r5 = r1 >> 8;
    0x000076ee lsrs r2, r1, 1                                |         r2 = r1 >> 1;
    0x000076f0 orr.w r5, r5, r7, lsl 24                      |         r5 |= (r7 << 24);
    0x000076f4 orr.w r2, r2, r7, lsl 31                      |         r2 |= (r7 << 31);
    0x000076f8 adds.w r6, r6, r8                             |         r6 += r8;
    0x000076fc eor.w r2, r2, r5                              |         r2 ^= r5;
    0x00007700 adc.w lr, lr, r0                              |         __asm ("adc.w lr, lr, r0");
    0x00007704 lsrs r5, r7, 8                                |         r5 = r7 >> 8;
    0x00007706 lsrs r0, r7, 1                                |         r0 = r7 >> 1;
    0x00007708 lsl.w r8, r4, 3                               |         r8 = r4 << 3;
    0x0000770c orr.w r5, r5, r1, lsl 24                      |         r5 |= (r1 << 24);
    0x00007710 orr.w r0, r0, r1, lsl 31                      |         r0 |= (r1 << 31);
    0x00007714 orr.w r8, r8, r3, lsr 29                      |         r8 |= (r3 >> 29);
    0x00007718 eors r0, r5                                   |         r0 ^= r5;
    0x0000771a lsrs r5, r1, 7                                |         r5 = r1 >> 7;
    0x0000771c eor.w r0, r0, r7, lsr 7                       |         r0 ^= (r7 >> 7);
    0x00007720 orr.w r5, r5, r7, lsl 25                      |         r5 |= (r7 << 25);
    0x00007724 eors r2, r5                                   |         r2 ^= r5;
    0x00007726 ldr r5, [sp, 0x78]                            |         r5 = var_78h;
    0x00007728 adds r2, r6, r2                               |         r2 = r6 + r2;
    0x0000772a ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x0000772c adc.w r0, lr, r0                              |         __asm ("adc.w r0, lr, r0");
    0x00007730 adds.w lr, r1, r5                             |         lr = r1 + r5;
    0x00007734 ldr r5, [sp, 0x68]                            |         r5 = var_68h;
    0x00007736 strd r2, r0, [r6, 0xe0]                       |         __asm ("strd r2, r0, [r6, 0xe0]");
    0x0000773a lsr.w r6, r4, 0x13                            |         r6 = r4 >> 0x13;
    0x0000773e orr.w r6, r6, r3, lsl 13                      |         r6 |= (r3 << 13);
    0x00007742 adc.w r1, r7, r5                              |         __asm ("adc.w r1, r7, r5");
    0x00007746 lsrs r5, r3, 0x13                             |         r5 = r3 >> 0x13;
    0x00007748 ldr r7, [sp, 0x40]                            |         r7 = var_40h;
    0x0000774a eor.w r6, r6, r8                              |         r6 ^= r8;
    0x0000774e lsl.w r8, r3, 3                               |         r8 = r3 << 3;
    0x00007752 lsrs r3, r3, 6                                |         r3 >>= 6;
    0x00007754 orr.w r5, r5, r4, lsl 13                      |         r5 |= (r4 << 13);
    0x00007758 orr.w r8, r8, r4, lsr 29                      |         r8 |= (r4 >> 29);
    0x0000775c eor.w r6, r6, r4, lsr 6                       |         r6 ^= (r4 >> 6);
    0x00007760 orr.w r3, r3, r4, lsl 26                      |         r3 |= (r4 << 26);
    0x00007764 lsrs r4, r7, 8                                |         r4 = r7 >> 8;
    0x00007766 eor.w r5, r5, r8                              |         r5 ^= r8;
    0x0000776a eors r5, r3                                   |         r5 ^= r3;
    0x0000776c lsrs r3, r7, 1                                |         r3 = r7 >> 1;
    0x0000776e adds.w r5, r5, lr                             |         r5 += lr;
    0x00007772 lsl.w lr, r0, 3                               |         lr = r0 << 3;
    0x00007776 adc.w r6, r6, r1                              |         __asm ("adc.w r6, r6, r1");
    0x0000777a ldr r1, [sp, 0x48]                            |         r1 = var_48h;
    0x0000777c orr.w lr, lr, r2, lsr 29                      |         lr |= (r2 >> 29);
    0x00007780 orr.w r3, r3, r1, lsl 31                      |         r3 |= (r1 << 31);
    0x00007784 lsrs r1, r1, 1                                |         r1 >>= 1;
    0x00007786 orr.w r1, r1, r7, lsl 31                      |         r1 |= (r7 << 31);
    0x0000778a ldr r7, [sp, 0x48]                            |         r7 = var_48h;
    0x0000778c orr.w r4, r4, r7, lsl 24                      |         r4 |= (r7 << 24);
    0x00007790 eors r3, r4                                   |         r3 ^= r4;
    0x00007792 lsrs r4, r7, 8                                |         r4 = r7 >> 8;
    0x00007794 ldr r7, [sp, 0x40]                            |         r7 = var_40h;
    0x00007796 orr.w r4, r4, r7, lsl 24                      |         r4 |= (r7 << 24);
    0x0000779a ldr r7, [sp, 0x48]                            |         r7 = var_48h;
    0x0000779c eors r1, r4                                   |         r1 ^= r4;
    0x0000779e ldr r4, [sp, 0x40]                            |         r4 = var_40h;
    0x000077a0 eor.w r1, r1, r7, lsr 7                       |         r1 ^= (r7 >> 7);
    0x000077a4 lsrs r4, r4, 7                                |         r4 >>= 7;
    0x000077a6 orr.w r4, r4, r7, lsl 25                      |         r4 |= (r7 << 25);
    0x000077aa eors r3, r4                                   |         r3 ^= r4;
    0x000077ac ldr r4, [sp, 0x58]                            |         r4 = var_58h;
    0x000077ae adds r3, r5, r3                               |         r3 = r5 + r3;
    0x000077b0 ldr r5, [sp, 0x40]                            |         r5 = var_40h;
    0x000077b2 adc.w r1, r6, r1                              |         __asm ("adc.w r1, r6, r1");
    0x000077b6 adds r6, r5, r4                               |         r6 = r5 + r4;
    0x000077b8 lsr.w r5, r0, 0x13                            |         r5 = r0 >> 0x13;
    0x000077bc ldr r4, [sp, 4]                               |         r4 = var_4h;
    0x000077be adc.w ip, r7, ip                              |         __asm ("adc.w ip, r7, ip");
    0x000077c2 orr.w r5, r5, r2, lsl 13                      |         r5 |= (r2 << 13);
    0x000077c6 strd r3, r1, [r4, 0xe8]                       |         __asm ("strd r3, r1, [r4, 0xe8]");
    0x000077ca eor.w r5, r5, lr                              |         r5 ^= lr;
    0x000077ce lsrs r4, r2, 0x13                             |         r4 = r2 >> 0x13;
    0x000077d0 lsl.w lr, r2, 3                               |         lr = r2 << 3;
    0x000077d4 lsrs r2, r2, 6                                |         r2 >>= 6;
    0x000077d6 ldr r7, [sp, 0x20]                            |         r7 = var_20h;
    0x000077d8 orr.w lr, lr, r0, lsr 29                      |         lr |= (r0 >> 29);
    0x000077dc orr.w r4, r4, r0, lsl 13                      |         r4 |= (r0 << 13);
    0x000077e0 orr.w r2, r2, r0, lsl 26                      |         r2 |= (r0 << 26);
    0x000077e4 eor.w r5, r5, r0, lsr 6                       |         r5 ^= (r0 >> 6);
    0x000077e8 lsr.w r0, fp, 1                               |         r0 = fp >> 1;
    0x000077ec eor.w r4, r4, lr                              |         r4 ^= lr;
    0x000077f0 eors r4, r2                                   |         r4 ^= r2;
    0x000077f2 lsrs r2, r7, 1                                |         r2 = r7 >> 1;
    0x000077f4 adds r4, r4, r6                               |         r4 += r6;
    0x000077f6 lsr.w r6, r7, 8                               |         r6 = r7 >> 8;
    0x000077fa orr.w r2, r2, fp, lsl 31                      |         r2 |= (fp << 31);
    0x000077fe orr.w r0, r0, r7, lsl 31                      |         r0 |= (r7 << 31);
    0x00007802 orr.w r6, r6, fp, lsl 24                      |         r6 |= (fp << 24);
    0x00007806 adc.w r5, r5, ip                              |         __asm ("adc.w r5, r5, ip");
    0x0000780a eors r2, r6                                   |         r2 ^= r6;
    0x0000780c lsr.w r6, fp, 8                               |         r6 = fp >> 8;
    0x00007810 orr.w r6, r6, r7, lsl 24                      |         r6 |= (r7 << 24);
    0x00007814 eors r0, r6                                   |         r0 ^= r6;
    0x00007816 lsrs r6, r7, 7                                |         r6 = r7 >> 7;
    0x00007818 eor.w r0, r0, fp, lsr 7                       |         r0 ^= (fp >> 7);
    0x0000781c orr.w r6, r6, fp, lsl 25                      |         r6 |= (fp << 25);
    0x00007820 eors r2, r6                                   |         r2 ^= r6;
    0x00007822 ldr r6, [sp, 4]                               |         r6 = var_4h;
    0x00007824 adds r4, r4, r2                               |         r4 += r2;
    0x00007826 adc.w r5, r5, r0                              |         __asm ("adc.w r5, r5, r0");
    0x0000782a mov r0, r7                                    |         r0 = r7;
    0x0000782c ldr r7, [sp, 0x6c]                            |         r7 = var_6ch;
    0x0000782e strd r4, r5, [r6, 0xf0]                       |         __asm ("strd r4, r5, [r6, 0xf0]");
    0x00007832 lsrs r4, r1, 0x13                             |         r4 = r1 >> 0x13;
    0x00007834 lsls r5, r1, 3                                |         r5 = r1 << 3;
    0x00007836 adds r2, r0, r7                               |         r2 = r0 + r7;
    0x00007838 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x0000783a orr.w r5, r5, r3, lsr 29                      |         r5 |= (r3 >> 29);
    0x0000783e orr.w r4, r4, r3, lsl 13                      |         r4 |= (r3 << 13);
    0x00007842 ldr r7, [sp, 0x5c]                            |         r7 = var_5ch;
    0x00007844 adc.w lr, fp, r0                              |         __asm ("adc.w lr, fp, r0");
    0x00007848 eors r4, r5                                   |         r4 ^= r5;
    0x0000784a lsrs r0, r3, 0x13                             |         r0 = r3 >> 0x13;
    0x0000784c lsls r5, r3, 3                                |         r5 = r3 << 3;
    0x0000784e lsrs r3, r3, 6                                |         r3 >>= 6;
    0x00007850 eor.w r4, r4, r1, lsr 6                       |         r4 ^= (r1 >> 6);
    0x00007854 orr.w r5, r5, r1, lsr 29                      |         r5 |= (r1 >> 29);
    0x00007858 orr.w r0, r0, r1, lsl 13                      |         r0 |= (r1 << 13);
    0x0000785c orr.w r3, r3, r1, lsl 26                      |         r3 |= (r1 << 26);
    0x00007860 eors r0, r5                                   |         r0 ^= r5;
    0x00007862 ldr r5, [sp, 0x60]                            |         r5 = var_60h;
    0x00007864 eors r0, r3                                   |         r0 ^= r3;
    0x00007866 lsrs r3, r7, 1                                |         r3 = r7 >> 1;
    0x00007868 adds r0, r0, r2                               |         r0 += r2;
    0x0000786a lsr.w r2, r7, 8                               |         r2 = r7 >> 8;
    0x0000786e adc.w r4, r4, lr                              |         __asm ("adc.w r4, r4, lr");
    0x00007872 orr.w r2, r2, r5, lsl 24                      |         r2 |= (r5 << 24);
    0x00007876 orr.w r3, r3, r5, lsl 31                      |         r3 |= (r5 << 31);
    0x0000787a lsrs r1, r5, 1                                |         r1 = r5 >> 1;
    0x0000787c eors r3, r2                                   |         r3 ^= r2;
    0x0000787e lsrs r2, r5, 8                                |         r2 = r5 >> 8;
    0x00007880 orr.w r1, r1, r7, lsl 31                      |         r1 |= (r7 << 31);
    0x00007884 orr.w r2, r2, r7, lsl 24                      |         r2 |= (r7 << 24);
    0x00007888 eors r2, r1                                   |         r2 ^= r1;
    0x0000788a lsrs r1, r7, 7                                |         r1 = r7 >> 7;
    0x0000788c eor.w r2, r2, r5, lsr 7                       |         r2 ^= (r5 >> 7);
    0x00007890 orr.w r1, r1, r5, lsl 25                      |         r1 |= (r5 << 25);
    0x00007894 eors r3, r1                                   |         r3 ^= r1;
    0x00007896 adds r0, r0, r3                               |         r0 += r3;
    0x00007898 add.w r3, r6, 0x80                            |         r3 = r6 + 0x80;
    0x0000789c str r3, [sp, 4]                               |         var_4h = r3;
    0x0000789e adc.w r4, r4, r2                              |         __asm ("adc.w r4, r4, r2");
    0x000078a2 ldr r3, [sp, 0xc4]                            |         r3 = var_c4h;
    0x000078a4 strd r0, r4, [r6, 0xf8]                       |         __asm ("strd r0, r4, [r6, 0xf8]");
    0x000078a8 ldr.w r2, [r3, 0x88]                          |         r2 = *((r3 + 0x88));
    0x000078ac ldrd r0, r1, [r3, 0x80]                       |         __asm ("ldrd r0, r1, [r3, 0x80]");
    0x000078b0 ldrd r7, r8, [r3, 0x8c]                       |         __asm ("ldrd r7, r8, [r3, 0x8c]");
    0x000078b4 str r2, [sp, 0x14]                            |         var_14h = r2;
    0x000078b6 ldrd sb, r2, [r3, 0x94]                       |         __asm ("ldrd sb, r2, [r3, 0x94]");
    0x000078ba adds r3, 0x80                                 |         r3 += 0x80;
    0x000078bc str r2, [sp, 0x40]                            |         var_40h = r2;
    0x000078be ldr r2, [r3, 0x1c]                            |         r2 = *((r3 + 0x1c));
    0x000078c0 str r2, [sp, 0x48]                            |         var_48h = r2;
    0x000078c2 ldr r2, [r3, 0x20]                            |         r2 = *((r3 + 0x20));
    0x000078c4 str r2, [sp, 0x58]                            |         var_58h = r2;
    0x000078c6 ldr r2, [r3, 0x24]                            |         r2 = *((r3 + 0x24));
    0x000078c8 str r2, [sp, 0x5c]                            |         var_5ch = r2;
    0x000078ca ldr r2, [r3, 0x28]                            |         r2 = *((r3 + 0x28));
    0x000078cc str r2, [sp, 0x60]                            |         var_60h = r2;
    0x000078ce ldr r2, [r3, 0x2c]                            |         r2 = *((r3 + 0x2c));
    0x000078d0 str r2, [sp, 0x64]                            |         var_64h = r2;
    0x000078d2 ldr r2, [r3, 0x30]                            |         r2 = *((r3 + 0x30));
    0x000078d4 str r2, [sp, 0x68]                            |         var_68h = r2;
    0x000078d6 ldr r2, [r3, 0x34]                            |         r2 = *((r3 + 0x34));
    0x000078d8 str r2, [sp, 0x6c]                            |         var_6ch = r2;
    0x000078da ldr r2, [r3, 0x38]                            |         r2 = *((r3 + 0x38));
    0x000078dc str r2, [sp, 0x70]                            |         var_70h = r2;
    0x000078de ldr r2, [r3, 0x3c]                            |         r2 = *((r3 + 0x3c));
    0x000078e0 str r2, [sp, 0x74]                            |         var_74h = r2;
    0x000078e2 ldr r2, [r3, 0x40]                            |         r2 = *((r3 + 0x40));
    0x000078e4 str r2, [sp, 0x78]                            |         var_78h = r2;
    0x000078e6 ldr r2, [r3, 0x44]                            |         r2 = *((r3 + 0x44));
    0x000078e8 str r2, [sp, 0x7c]                            |         var_7ch = r2;
    0x000078ea ldr r2, [r3, 0x48]                            |         r2 = *((r3 + 0x48));
    0x000078ec str r2, [sp, 0x80]                            |         var_80h = r2;
    0x000078ee ldr r2, [r3, 0x4c]                            |         r2 = *((r3 + 0x4c));
    0x000078f0 str r2, [sp, 0x8c]                            |         var_8ch = r2;
    0x000078f2 ldr r2, [r3, 0x50]                            |         r2 = *((r3 + 0x50));
    0x000078f4 str r2, [sp, 0x94]                            |         var_94h = r2;
    0x000078f6 ldr r2, [r3, 0x54]                            |         r2 = *((r3 + 0x54));
    0x000078f8 str r2, [sp, 0x98]                            |         var_98h = r2;
    0x000078fa ldr r2, [r3, 0x58]                            |         r2 = *((r3 + 0x58));
    0x000078fc str r2, [sp, 0x9c]                            |         var_9ch = r2;
    0x000078fe ldr r2, [r3, 0x5c]                            |         r2 = *((r3 + 0x5c));
    0x00007900 str r2, [sp, 0xa0]                            |         var_a0h = r2;
    0x00007902 ldr r2, [r3, 0x60]                            |         r2 = *((r3 + 0x60));
    0x00007904 str r2, [sp, 0xa4]                            |         var_a4h = r2;
    0x00007906 ldr r2, [r3, 0x64]                            |         r2 = *((r3 + 0x64));
    0x00007908 str r2, [sp, 0xa8]                            |         var_a8h = r2;
    0x0000790a ldr r2, [r3, 0x68]                            |         r2 = *((r3 + 0x68));
    0x0000790c str r2, [sp, 0xac]                            |         var_ach = r2;
    0x0000790e ldr r2, [r3, 0x6c]                            |         r2 = *((r3 + 0x6c));
    0x00007910 str r2, [sp, 0xb0]                            |         var_b0h = r2;
    0x00007912 ldr r2, [r3, 0x70]                            |         r2 = *((r3 + 0x70));
    0x00007914 str r2, [sp, 0xb4]                            |         var_b4h = r2;
    0x00007916 ldr r2, [r3, 0x74]                            |         r2 = *((r3 + 0x74));
    0x00007918 str r2, [sp, 0xb8]                            |         var_b8h = r2;
    0x0000791a ldr r2, [r3, 0x78]                            |         r2 = *((r3 + 0x78));
    0x0000791c str r2, [sp, 0xbc]                            |         var_bch = r2;
    0x0000791e ldr r2, [r3, 0x7c]                            |         r2 = *((r3 + 0x7c));
    0x00007920 str r3, [sp, 0xc4]                            |         var_c4h = r3;
    0x00007922 str r2, [sp, 0xc0]                            |         var_c0h = r2;
    0x00007924 b.w 0x5e8c                                    |         
                                                             |     }
                                                             | label_0:
    0x00007928 ldr r3, [sp, 0x108]                           |     r3 = var_108h;
    0x0000792a add r0, sp, 0x118                             |     r0 += var_118h;
    0x0000792c ldr r2, [sp, 0x50]                            |     r2 = var_50h;
    0x0000792e ldr r1, [sp, 8]                               |     r1 = var_8h;
    0x00007930 str r6, [r3, 0x14]                            |     *((r3 + 0x14)) = r6;
    0x00007932 str r2, [r3, 0x38]                            |     *((r3 + 0x38)) = r2;
    0x00007934 ldr r2, [sp, 0x54]                            |     r2 = var_54h;
    0x00007936 str r1, [r3, 0xc]                             |     *((r3 + 0xc)) = r1;
    0x00007938 ldr r1, [sp, 0x10c]                           |     r1 = var_10ch;
    0x0000793a str r2, [r3, 0x3c]                            |     *((r3 + 0x3c)) = r2;
    0x0000793c ldr r2, [sp, 0x4c]                            |     r2 = var_4ch;
    0x0000793e ldr r5, [sp, 0x38]                            |     r5 = var_38h;
    0x00007940 add.w r4, r1, 0x38                            |     r4 = r1 + 0x38;
    0x00007944 str r2, [r3, 0x18]                            |     *((r3 + 0x18)) = r2;
    0x00007946 ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x00007948 str r2, [r3, 0x1c]                            |     *((r3 + 0x1c)) = r2;
    0x0000794a ldr r2, [sp, 0x18]                            |     r2 = var_18h;
    0x0000794c str r2, [r3, 0x30]                            |     *((r3 + 0x30)) = r2;
    0x0000794e ldr r2, [sp, 0xc]                             |     r2 = var_ch;
    0x00007950 str r2, [r3, 0x34]                            |     *((r3 + 0x34)) = r2;
    0x00007952 ldr r2, [sp, 0x28]                            |     r2 = var_28h;
    0x00007954 str r2, [r3, 0x10]                            |     *((r3 + 0x10)) = r2;
    0x00007956 ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x00007958 str r2, [r3, 0x28]                            |     *((r3 + 0x28)) = r2;
    0x0000795a ldr r2, [sp, 0x10]                            |     r2 = var_10h;
    0x0000795c str r2, [r3, 0x2c]                            |     *((r3 + 0x2c)) = r2;
    0x0000795e ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x00007960 str r2, [r3, 8]                               |     *((r3 + 8)) = r2;
    0x00007962 mov r2, r3                                    |     r2 = r3;
    0x00007964 ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x00007966 str r5, [r2]                                  |     *(r2) = r5;
    0x00007968 str r3, [r2, 0x20]                            |     *((r2 + 0x20)) = r3;
    0x0000796a ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x0000796c str r3, [r2, 0x24]                            |     *((r2 + 0x24)) = r3;
    0x0000796e sub.w r3, r1, 8                               |     r3 = r1 - 8;
    0x00007972 ldr r1, [sp, 0x3c]                            |     r1 = var_3ch;
    0x00007974 str r1, [r2, 4]                               |     *((r2 + 4)) = r1;
    0x00007976 b 0x797e                                      |     
                                                             |     while (r3 != r4) {
    0x00007978 ldrd r5, r1, [r0]                             |         __asm ("ldrd r5, r1, [r0]");
    0x0000797c adds r0, 8                                    |         r0 += 8;
    0x0000797e ldr r2, [r3, 8]!                              |         r2 = *((r3 += 8));
    0x00007982 ldr r6, [r3, 4]                               |         r6 = *((r3 + 4));
    0x00007984 adds r2, r2, r5                               |         r2 += r5;
    0x00007986 str r2, [r3]                                  |         *(r3) = r2;
    0x00007988 adc.w r1, r1, r6                              |         __asm ("adc.w r1, r1, r6");
    0x0000798c cmp r3, r4                                    |         
    0x0000798e str r1, [r3, 4]                               |         *((r3 + 4)) = r1;
    0x00007990 bne 0x7978                                    |         
                                                             |     }
    0x00007992 ldr r2, [pc, 0x20]                            |     
    0x00007994 ldr r3, [pc, 0x20]                            |     r3 = *(0x79b8);
    0x00007996 add r2, pc                                    |     r2 = 0xf350;
    0x00007998 ldr r3, [r2, r3]                              |     r3 = *(0xf350);
    0x0000799a ldr r2, [r3]                                  |     r2 = *(0xf350);
    0x0000799c ldr r3, [sp, 0x3d4]                           |     r3 = var_3d4h;
    0x0000799e eors r2, r3                                   |     r2 ^= r3;
    0x000079a0 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 == r3) {
    0x000079a4 bne 0x79ae                                    |         
    0x000079a6 add.w sp, sp, 0x3dc                           |         
    0x000079aa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             |     }
    0x000079ae blx 0xbe8                                     |     fcn_00000be8 ();
    0x000079b2 nop                                           |     
    0x000079b4 adds r5, 0xa2                                 |     r5 += 0xa2;
    0x000079b6 movs r3, r0                                   |     r3 = r0;
    0x000079b8 lsls r0, r2, 2                                |     r0 = r2 << 2;
    0x000079ba movs r0, r0                                   |     
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libcrypt.so.2.0.0 @ 0xe474 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000e474 ()                                      | void fcn_0000e474 (int16_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     uint32_t var_0h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_20h_2;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_78h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000e474 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000e478 sub sp, 0x54                                      |     
    0x0000e47a mov r6, r1                                        |     r6 = r1;
    0x0000e47c str r1, [sp]                                      |     *(sp) = r1;
    0x0000e47e ldrb r1, [r1]                                     |     r1 = *(r1);
    0x0000e480 str r2, [sp, 4]                                   |     var_4h_2 = r2;
    0x0000e482 cmp r1, 0x24                                      |     
                                                                 |     if (r1 != 0x24) {
    0x0000e484 bne 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e486 mov r4, r3                                        |     r4 = r3;
    0x0000e488 ldrb r3, [r6, 1]                                  |     r3 = *((r6 + 1));
    0x0000e48a cmp r3, 0x32                                      |     
    0x0000e48c beq 0xe4a0                                        |     
                                                                 |     while (r2 > 0x19) {
                                                                 | label_0:
    0x0000e48e movs r6, 0                                        |         r6 = 0;
    0x0000e490 blx 0xc54                                         |         fcn_00000c54 ();
    0x0000e494 movs r3, 0x16                                     |         r3 = 0x16;
    0x0000e496 str r3, [r0]                                      |         *(r0) = r3;
                                                                 | label_1:
    0x0000e498 mov r0, r6                                        |         r0 = r6;
    0x0000e49a add sp, 0x54                                      |         
    0x0000e49c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0000e4a0 ldrb r3, [r6, 2]                                  |         r3 = *((r6 + 2));
    0x0000e4a2 sub.w r2, r3, 0x61                                |         r2 = r3 - 0x61;
    0x0000e4a6 cmp r2, 0x19                                      |         
    0x0000e4a8 bhi 0xe48e                                        |         
                                                                 |     }
    0x0000e4aa ldr.w r2, [pc, 0xc68]                             |     
    0x0000e4ae add r2, pc                                        |     r2 = 0x1d5c8;
    0x0000e4b0 add r3, r2                                        |     r3 += r2;
    0x0000e4b2 ldrb r3, [r3, -0x1d]                              |     r3 = *((r3 - 0x1d));
    0x0000e4b6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000e4b8 beq 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e4ba ldrb r3, [r6, 3]                                  |     r3 = *((r6 + 3));
    0x0000e4bc cmp r3, 0x24                                      |     
                                                                 |     if (r3 != 0x24) {
    0x0000e4be bne 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e4c0 ldrb r2, [r6, 4]                                  |     r2 = *((r6 + 4));
    0x0000e4c2 mov r7, r6                                        |     r7 = r6;
    0x0000e4c4 sub.w r3, r2, 0x30                                |     r3 = r2 - 0x30;
    0x0000e4c8 uxtb r1, r3                                       |     r1 = (int8_t) r3;
    0x0000e4ca cmp r1, 3                                         |     
                                                                 |     if (r1 > 3) {
    0x0000e4cc bhi 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e4ce ldrb r6, [r6, 5]                                  |     r6 = *((r6 + 5));
    0x0000e4d0 mov r5, r0                                        |     r5 = r0;
    0x0000e4d2 sub.w r1, r6, 0x30                                |     r1 = r6 - 0x30;
    0x0000e4d6 uxtb r0, r1                                       |     r0 = (int8_t) r1;
    0x0000e4d8 cmp r0, 9                                         |     
                                                                 |     if (r0 > 9) {
    0x0000e4da bhi 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e4dc cmp r6, 0x31                                      |     
    0x0000e4de ite ls                                            |     
                                                                 |     if (r6 > 0x31) {
    0x0000e4e0 movls r6, 0                                       |         r6 = 0;
                                                                 |     }
                                                                 |     if (r6 <= 0x31) {
    0x0000e4e2 movhi r6, 1                                       |         r6 = 1;
                                                                 |     }
    0x0000e4e4 cmp r2, 0x33                                      |     
    0x0000e4e6 it ne                                             |     
                                                                 |     if (r2 == 0x33) {
    0x0000e4e8 movne r6, 0                                       |         r6 = 0;
                                                                 |     }
    0x0000e4ea cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000e4ec bne 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e4ee ldrb r2, [r7, 6]                                  |     r2 = *((r7 + 6));
    0x0000e4f0 cmp r2, 0x24                                      |     
                                                                 |     if (r2 != 0x24) {
    0x0000e4f2 bne 0xe48e                                        |         goto label_0;
                                                                 |     }
    0x0000e4f4 add.w r3, r3, r3, lsl 2                           |     r3 += (r3 << 2);
    0x0000e4f8 ldr r2, [sp, 0x78]                                |     r2 = var_78h;
    0x0000e4fa add.w r1, r1, r3, lsl 1                           |     r1 += (r3 << 1);
    0x0000e4fe movs r3, 1                                        |     r3 = 1;
    0x0000e500 lsls r3, r1                                       |     r3 <<= r1;
    0x0000e502 cmp r3, r2                                        |     
    0x0000e504 str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     if (r3 <= r2) {
    0x0000e506 blo 0xe59e                                        |         goto label_5;
                                                                 |     }
    0x0000e508 ldr.w r0, [pc, 0xc0c]                             |     
    0x0000e50c add.w r3, r4, 0x1080                              |     r3 = r4 + 0x1080;
    0x0000e510 adds r3, 0x10                                     |     r3 += 0x10;
    0x0000e512 ldr r1, [sp]                                      |     r1 = *(sp);
    0x0000e514 add.w ip, r4, 0x10a0                              |     
    0x0000e518 mov r2, r3                                        |     r2 = r3;
    0x0000e51a add r0, pc                                        |     r0 = 0x1d636;
    0x0000e51c str r3, [sp, 0x48]                                |     var_48h = r3;
    0x0000e51e b 0xe596                                          |     
                                                                 |     while (r3 < 0x5f) {
    0x0000e520 add r3, r0                                        |         r3 += r0;
    0x0000e522 ldrb.w r8, [r3, 0x60]                             |         r8 = *((r3 + 0x60));
    0x0000e526 cmp.w r8, 0x3f                                    |         
                                                                 |         if (r8 > 0x3f) {
    0x0000e52a bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e52c ldrb r3, [r1, 8]                                  |         r3 = *((r1 + 8));
    0x0000e52e subs r3, 0x20                                     |         r3 -= 0x20;
    0x0000e530 cmp r3, 0x5f                                      |         
                                                                 |         if (r3 > 0x5f) {
    0x0000e532 bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e534 add r3, r0                                        |         r3 += r0;
    0x0000e536 ldrb.w r7, [r3, 0x60]                             |         r7 = *((r3 + 0x60));
    0x0000e53a cmp r7, 0x3f                                      |         
                                                                 |         if (r7 > 0x3f) {
    0x0000e53c bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e53e lsr.w lr, r7, 4                                   |         lr = r7 >> 4;
    0x0000e542 mov r3, r2                                        |         r3 = r2;
    0x0000e544 orr.w lr, lr, r8, lsl 2                           |         lr |= (r8 << 2);
    0x0000e548 strb lr, [r3], 1                                  |         
    0x0000e54c cmp ip, r3                                        |         
                                                                 |         if (ip < r3) {
    0x0000e54e bls 0xe5a8                                        |             goto label_6;
                                                                 |         }
    0x0000e550 ldrb r3, [r1, 9]                                  |         r3 = *((r1 + 9));
    0x0000e552 subs r3, 0x20                                     |         r3 -= 0x20;
    0x0000e554 cmp r3, 0x5f                                      |         
                                                                 |         if (r3 > 0x5f) {
    0x0000e556 bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e558 add r3, r0                                        |         r3 += r0;
    0x0000e55a ldrb.w lr, [r3, 0x60]                             |         
    0x0000e55e cmp.w lr, 0x3f                                    |         
                                                                 |         if (lr > 0x3f) {
    0x0000e562 bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e564 lsr.w r3, lr, 2                                   |         r3 = lr >> 2;
    0x0000e568 orr.w r3, r3, r7, lsl 4                           |         r3 |= (r7 << 4);
    0x0000e56c strb r3, [r2, 1]                                  |         *((r2 + 1)) = r3;
    0x0000e56e adds r3, r2, 2                                    |         r3 = r2 + 2;
    0x0000e570 cmp ip, r3                                        |         
                                                                 |         if (ip < r3) {
    0x0000e572 bls 0xe5a8                                        |             goto label_6;
                                                                 |         }
    0x0000e574 ldrb r3, [r1, 0xa]                                |         r3 = *((r1 + 0xa));
    0x0000e576 subs r3, 0x20                                     |         r3 -= 0x20;
    0x0000e578 cmp r3, 0x5f                                      |         
                                                                 |         if (r3 > 0x5f) {
    0x0000e57a bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e57c add r3, r0                                        |         r3 += r0;
    0x0000e57e ldrb.w r3, [r3, 0x60]                             |         r3 = *((r3 + 0x60));
    0x0000e582 cmp r3, 0x3f                                      |         
                                                                 |         if (r3 > 0x3f) {
    0x0000e584 bhi 0xe59e                                        |             goto label_5;
                                                                 |         }
    0x0000e586 orr.w r3, r3, lr, lsl 6                           |         r3 |= (lr << 6);
    0x0000e58a adds r2, 3                                        |         r2 += 3;
    0x0000e58c adds r1, 4                                        |         r1 += 4;
    0x0000e58e strb r3, [r2, -0x1]                               |         *((r2 - 0x1)) = r3;
    0x0000e592 cmp r2, ip                                        |         
                                                                 |         if (r2 >= ip) {
    0x0000e594 bhs 0xe5a8                                        |             goto label_6;
                                                                 |         }
    0x0000e596 ldrb r3, [r1, 7]                                  |         r3 = *((r1 + 7));
    0x0000e598 subs r3, 0x20                                     |         r3 -= 0x20;
    0x0000e59a cmp r3, 0x5f                                      |         
    0x0000e59c bls 0xe520                                        |         
                                                                 |     }
                                                                 | label_5:
    0x0000e59e blx 0xc54                                         |     fcn_00000c54 ();
    0x0000e5a2 movs r3, 0x16                                     |     r3 = 0x16;
    0x0000e5a4 str r3, [r0]                                      |     *(r0) = r3;
    0x0000e5a6 b 0xe498                                          |     goto label_1;
                                                                 | label_6:
    0x0000e5a8 ldr r0, [sp, 0x48]                                |     r0 = var_48h;
    0x0000e5aa movs r1, 4                                        |     r1 = 4;
    0x0000e5ac bl 0xe364                                         |     fcn_0000e364 (r0, r1);
    0x0000e5b0 ldr r3, [sp]                                      |     r3 = *(sp);
    0x0000e5b2 mov r0, r5                                        |     r0 = r5;
    0x0000e5b4 add.w r5, r4, 0x1000                              |     r5 = r4 + 0x1000;
    0x0000e5b8 mov.w r8, 0                                       |     r8 = 0;
    0x0000e5bc add.w sl, r5, 4                                   |     sl = r5 + 4;
    0x0000e5c0 add.w r7, r4, 0x400                               |     r7 = r4 + 0x400;
    0x0000e5c4 ldrb r2, [r3, 2]                                  |     r2 = *((r3 + 2));
    0x0000e5c6 mov r6, r8                                        |     r6 = r8;
    0x0000e5c8 ldr.w r3, [pc, 0xb50]                             |     
    0x0000e5cc add r3, pc                                        |     r3 = 0x1d6ec;
    0x0000e5ce add r3, r2                                        |     r3 += r2;
    0x0000e5d0 add.w r2, r4, 0x1040                              |     r2 = r4 + 0x1040;
    0x0000e5d4 adds r2, 8                                        |     r2 += 8;
    0x0000e5d6 ldrb r3, [r3, -0x1d]                              |     r3 = *((r3 - 0x1d));
    0x0000e5da mov r1, r2                                        |     r1 = r2;
    0x0000e5dc str r2, [sp, 0x14]                                |     var_14h = r2;
    0x0000e5de mov r2, r5                                        |     r2 = r5;
    0x0000e5e0 bl 0xe378                                         |     fcn_0000e378 (r0, r1, r2, r3, r4);
    0x0000e5e4 ldr.w r1, [pc, 0xb38]                             |     
    0x0000e5e8 mov.w r2, 0x1000                                  |     r2 = 0x1000;
    0x0000e5ec mov r0, r4                                        |     r0 = r4;
    0x0000e5ee add r1, pc                                        |     r1 = 0x1d712;
    0x0000e5f0 blx 0xbb8                                         |     fcn_00000bb8 ();
    0x0000e5f4 add.w r3, r4, 0xc00                               |     r3 = r4 + fcn.00000c00;
    0x0000e5f8 add.w lr, r4, 0x800                               |     lr = r4 + 0x800;
    0x0000e5fc mov r1, r8                                        |     r1 = r8;
                                                                 |     do {
    0x0000e5fe and r0, r8, 2                                     |         r0 = r8 & 2;
    0x0000e602 add.w r0, r4, r0, lsl 2                           |         r0 = r4 + (r0 << 2);
    0x0000e606 add.w sb, r0, 0x1000                              |         sb = r0 + 0x1000;
    0x0000e60a ldr r0, [r5]                                      |         r0 = *(r5);
    0x0000e60c ldr.w r2, [sb, 0x90]                              |         r2 = *((sb + 0x90));
    0x0000e610 eors r2, r0                                       |         r2 ^= r0;
    0x0000e612 ldr.w r0, [sb, 0x94]                              |         r0 = *((sb + 0x94));
    0x0000e616 eor.w ip, r2, r1                                  |         
    0x0000e61a lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000e61e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e622 ldr r1, [r7, r2]                                  |         r1 = *((r7 + r2));
    0x0000e624 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000e628 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e62c ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e62e add r2, r1                                        |         r2 += r1;
    0x0000e630 lsr.w r1, ip, 6                                   |         r1 = ip >> 6;
    0x0000e634 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e638 ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000e63c eors r1, r2                                       |         r1 ^= r2;
    0x0000e63e lsl.w r2, ip, 2                                   |         r2 = ip << 2;
    0x0000e642 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e646 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e648 add r1, r2                                        |         r1 += r2;
    0x0000e64a ldr r2, [r5, 4]                                   |         r2 = *((r5 + 4));
    0x0000e64c eors r2, r0                                       |         r2 ^= r0;
    0x0000e64e eors r2, r1                                       |         r2 ^= r1;
    0x0000e650 ldr r1, [r5, 8]                                   |         r1 = *((r5 + 8));
    0x0000e652 eors r2, r6                                       |         r2 ^= r6;
    0x0000e654 eor.w ip, ip, r1                                  |         
    0x0000e658 lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000e65a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e65e ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000e660 lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000e662 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e666 ldr r0, [r4, r1]                                  |         r0 = *((r4 + r1));
    0x0000e668 lsrs r1, r2, 6                                    |         r1 = r2 >> 6;
    0x0000e66a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e66e ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000e672 add r0, r6                                        |         r0 += r6;
    0x0000e674 eors r1, r0                                       |         r1 ^= r0;
    0x0000e676 lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000e678 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000e67c ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000e67e add r0, r1                                        |         r0 += r1;
    0x0000e680 ldr r1, [r5, 0xc]                                 |         r1 = *((r5 + 0xc));
    0x0000e682 eor.w r0, r0, ip                                  |         r0 ^= ip;
    0x0000e686 eors r2, r1                                       |         r2 ^= r1;
    0x0000e688 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000e68a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e68e ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000e690 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000e692 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e696 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000e698 add r1, r6                                        |         r1 += r6;
    0x0000e69a lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e69c and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e6a0 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e6a4 eors r6, r1                                       |         r6 ^= r1;
    0x0000e6a6 lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000e6a8 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e6ac ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000e6ae add r1, r6                                        |         r1 += r6;
    0x0000e6b0 eors r1, r2                                       |         r1 ^= r2;
    0x0000e6b2 ldr r2, [r5, 0x10]                                |         r2 = *((r5 + 0x10));
    0x0000e6b4 eors r0, r2                                       |         r0 ^= r2;
    0x0000e6b6 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e6b8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e6bc ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e6be lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e6c0 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e6c4 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e6c6 add r2, r6                                        |         r2 += r6;
    0x0000e6c8 lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000e6ca and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e6ce ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e6d2 eors r6, r2                                       |         r6 ^= r2;
    0x0000e6d4 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000e6d6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e6da ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e6dc add r2, r6                                        |         r2 += r6;
    0x0000e6de eors r0, r2                                       |         r0 ^= r2;
    0x0000e6e0 ldr r2, [r5, 0x14]                                |         r2 = *((r5 + 0x14));
    0x0000e6e2 eors r1, r2                                       |         r1 ^= r2;
    0x0000e6e4 lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000e6e6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e6ea ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e6ec lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000e6ee and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e6f2 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e6f4 add r2, r6                                        |         r2 += r6;
    0x0000e6f6 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e6f8 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e6fc ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e700 eors r6, r2                                       |         r6 ^= r2;
    0x0000e702 lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000e704 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e708 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e70a add r2, r6                                        |         r2 += r6;
    0x0000e70c eors r1, r2                                       |         r1 ^= r2;
    0x0000e70e ldr r2, [r5, 0x18]                                |         r2 = *((r5 + 0x18));
    0x0000e710 eors r0, r2                                       |         r0 ^= r2;
    0x0000e712 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e714 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e718 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e71a lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e71c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e720 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e722 add r2, r6                                        |         r2 += r6;
    0x0000e724 lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000e726 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e72a ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e72e eors r6, r2                                       |         r6 ^= r2;
    0x0000e730 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000e732 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e736 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e738 add r2, r6                                        |         r2 += r6;
    0x0000e73a eors r0, r2                                       |         r0 ^= r2;
    0x0000e73c ldr r2, [r5, 0x1c]                                |         r2 = *((r5 + 0x1c));
    0x0000e73e eors r1, r2                                       |         r1 ^= r2;
    0x0000e740 lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000e742 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e746 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e748 lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000e74a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e74e ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e750 add r2, r6                                        |         r2 += r6;
    0x0000e752 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e754 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e758 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e75c eors r6, r2                                       |         r6 ^= r2;
    0x0000e75e lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000e760 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e764 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e766 add r2, r6                                        |         r2 += r6;
    0x0000e768 eors r1, r2                                       |         r1 ^= r2;
    0x0000e76a ldr r2, [r5, 0x20]                                |         r2 = *((r5 + 0x20));
    0x0000e76c eors r0, r2                                       |         r0 ^= r2;
    0x0000e76e lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e770 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e774 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e776 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e778 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e77c ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e77e add r2, r6                                        |         r2 += r6;
    0x0000e780 lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000e782 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e786 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e78a eors r6, r2                                       |         r6 ^= r2;
    0x0000e78c lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000e78e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e792 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e794 add r2, r6                                        |         r2 += r6;
    0x0000e796 eors r0, r2                                       |         r0 ^= r2;
    0x0000e798 ldr r2, [r5, 0x24]                                |         r2 = *((r5 + 0x24));
    0x0000e79a eors r1, r2                                       |         r1 ^= r2;
    0x0000e79c lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000e79e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7a2 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e7a4 lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000e7a6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7aa ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e7ac add r2, r6                                        |         r2 += r6;
    0x0000e7ae lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e7b0 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e7b4 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e7b8 eors r6, r2                                       |         r6 ^= r2;
    0x0000e7ba lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000e7bc and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7c0 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e7c2 add r2, r6                                        |         r2 += r6;
    0x0000e7c4 eors r1, r2                                       |         r1 ^= r2;
    0x0000e7c6 ldr r2, [r5, 0x28]                                |         r2 = *((r5 + 0x28));
    0x0000e7c8 eors r0, r2                                       |         r0 ^= r2;
    0x0000e7ca lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e7cc and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7d0 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e7d2 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e7d4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7d8 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e7da add r2, r6                                        |         r2 += r6;
    0x0000e7dc lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000e7de and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e7e2 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e7e6 eors r6, r2                                       |         r6 ^= r2;
    0x0000e7e8 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000e7ea and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7ee ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e7f0 add r2, r6                                        |         r2 += r6;
    0x0000e7f2 eors r0, r2                                       |         r0 ^= r2;
    0x0000e7f4 ldr r2, [r5, 0x2c]                                |         r2 = *((r5 + 0x2c));
    0x0000e7f6 eors r1, r2                                       |         r1 ^= r2;
    0x0000e7f8 lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000e7fa and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e7fe ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e800 lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000e802 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e806 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e808 add r2, r6                                        |         r2 += r6;
    0x0000e80a lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e80c and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e810 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e814 eors r6, r2                                       |         r6 ^= r2;
    0x0000e816 lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000e818 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e81c ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e81e add r2, r6                                        |         r2 += r6;
    0x0000e820 eors r2, r1                                       |         r2 ^= r1;
    0x0000e822 ldr r1, [r5, 0x30]                                |         r1 = *((r5 + 0x30));
    0x0000e824 eors r0, r1                                       |         r0 ^= r1;
    0x0000e826 lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000e828 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e82c ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000e82e lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000e830 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e834 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000e836 add r1, r6                                        |         r1 += r6;
    0x0000e838 lsrs r6, r2, 6                                    |         r6 = r2 >> 6;
    0x0000e83a and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e83e ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e842 eors r6, r1                                       |         r6 ^= r1;
    0x0000e844 lsls r1, r2, 2                                    |         r1 = r2 << 2;
    0x0000e846 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e84a ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000e84c add r1, r6                                        |         r1 += r6;
    0x0000e84e eors r0, r1                                       |         r0 ^= r1;
    0x0000e850 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000e852 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e856 ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000e858 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000e85a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e85e ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000e860 add r1, r6                                        |         r1 += r6;
    0x0000e862 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e864 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e868 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e86c eors r6, r1                                       |         r6 ^= r1;
    0x0000e86e lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000e870 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e874 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000e876 add r6, r1                                        |         r6 += r1;
    0x0000e878 ldr r1, [r5, 0x34]                                |         r1 = *((r5 + 0x34));
    0x0000e87a eors r2, r1                                       |         r2 ^= r1;
    0x0000e87c eor.w r1, r6, r2                                  |         r1 = r6 ^ r2;
    0x0000e880 ldr r2, [r5, 0x38]                                |         r2 = *((r5 + 0x38));
    0x0000e882 eors r0, r2                                       |         r0 ^= r2;
    0x0000e884 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e886 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e88a ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000e88c lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e88e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e892 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e894 add r2, r6                                        |         r2 += r6;
    0x0000e896 lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000e898 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e89c ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e8a0 eors r6, r2                                       |         r6 ^= r2;
    0x0000e8a2 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000e8a4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e8a8 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e8aa add r2, r6                                        |         r2 += r6;
    0x0000e8ac eors r0, r2                                       |         r0 ^= r2;
    0x0000e8ae ldr r2, [r5, 0x3c]                                |         r2 = *((r5 + 0x3c));
    0x0000e8b0 eors r2, r1                                       |         r2 ^= r1;
    0x0000e8b2 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000e8b4 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e8b8 ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000e8ba lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000e8bc and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e8c0 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000e8c2 add r1, r6                                        |         r1 += r6;
    0x0000e8c4 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000e8c6 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e8ca ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000e8ce eors r6, r1                                       |         r6 ^= r1;
    0x0000e8d0 lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000e8d2 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e8d6 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000e8d8 add r1, r6                                        |         r1 += r6;
    0x0000e8da eors r1, r2                                       |         r1 ^= r2;
    0x0000e8dc ldr r2, [r5, 0x40]                                |         r2 = *((r5 + 0x40));
    0x0000e8de eors r0, r2                                       |         r0 ^= r2;
    0x0000e8e0 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e8e2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e8e6 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000e8ea lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e8ec and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e8f0 ldr r6, [r4, r2]                                  |         r6 = *((r4 + r2));
    0x0000e8f2 lsrs r2, r1, 6                                    |         r2 = r1 >> 6;
    0x0000e8f4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e8f8 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000e8fc add r6, ip                                        |         r6 += ip;
    0x0000e8fe eors r2, r6                                       |         r2 ^= r6;
    0x0000e900 lsls r6, r1, 2                                    |         r6 = r1 << 2;
    0x0000e902 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000e906 ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000e908 add r6, r2                                        |         r6 += r2;
    0x0000e90a ldr r2, [r5, 0x44]                                |         r2 = *((r5 + 0x44));
    0x0000e90c eors r6, r0                                       |         r6 ^= r0;
    0x0000e90e eors r1, r2                                       |         r1 ^= r2;
    0x0000e910 str.w r1, [r5, r8, lsl 2]                         |         __asm ("str.w r1, [r5, r8, lsl 2]");
    0x0000e914 str.w r6, [sl, r8, lsl 2]                         |         __asm ("str.w r6, [sl, r8, lsl 2]");
    0x0000e918 add.w r8, r8, 2                                   |         r8 += 2;
    0x0000e91c cmp.w r8, 0x12                                    |         
    0x0000e920 bne.w 0xe5fe                                      |         
                                                                 |     } while (r8 != 0x12);
    0x0000e924 mov r0, r4                                        |     r0 = r4;
    0x0000e926 mov r2, r1                                        |     r2 = r1;
    0x0000e928 mov sb, r6                                        |     sb = r6;
                                                                 |     do {
    0x0000e92a ldr r6, [r5]                                      |         r6 = *(r5);
    0x0000e92c ldr.w r1, [r5, 0x98]                              |         r1 = *((r5 + 0x98));
    0x0000e930 eors r1, r6                                       |         r1 ^= r6;
    0x0000e932 ldr r6, [r5, 4]                                   |         r6 = *((r5 + 4));
    0x0000e934 eors r2, r1                                       |         r2 ^= r1;
    0x0000e936 ldr.w r1, [r5, 0x9c]                              |         r1 = *((r5 + 0x9c));
    0x0000e93a lsr.w ip, r2, 0xe                                 |         
    0x0000e93e and ip, ip, 0x3fc                                 |         
    0x0000e942 eors r1, r6                                       |         r1 ^= r6;
    0x0000e944 ldr.w r8, [r7, ip]                                |         r8 = *((r7 + ip));
    0x0000e948 lsr.w ip, r2, 0x16                                |         
    0x0000e94c and ip, ip, 0x3fc                                 |         
    0x0000e950 ldr.w ip, [r4, ip]                                |         ip = *((r4 + ip));
    0x0000e954 add ip, r8                                        |         
    0x0000e956 lsr.w r8, r2, 6                                   |         r8 = r2 >> 6;
    0x0000e95a and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000e95e ldr.w r8, [lr, r8]                                |         r8 = *((lr + r8));
    0x0000e962 eor.w r8, r8, ip                                  |         r8 ^= ip;
    0x0000e966 lsl.w ip, r2, 2                                   |         
    0x0000e96a and ip, ip, 0x3fc                                 |         
    0x0000e96e ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000e972 add ip, r8                                        |         
    0x0000e974 eor.w r1, ip, r1                                  |         r1 = ip ^ r1;
    0x0000e978 eor.w r6, sb, r1                                  |         r6 = sb ^ r1;
    0x0000e97c ldr r1, [r5, 8]                                   |         r1 = *((r5 + 8));
    0x0000e97e eors r2, r1                                       |         r2 ^= r1;
    0x0000e980 lsrs r1, r6, 0xe                                  |         r1 = r6 >> 0xe;
    0x0000e982 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e986 ldr.w ip, [r7, r1]                                |         ip = *((r7 + r1));
    0x0000e98a lsrs r1, r6, 0x16                                 |         r1 = r6 >> 0x16;
    0x0000e98c and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e990 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000e992 add r1, ip                                        |         r1 += ip;
    0x0000e994 lsr.w ip, r6, 6                                   |         
    0x0000e998 and ip, ip, 0x3fc                                 |         
    0x0000e99c ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000e9a0 eor.w ip, ip, r1                                  |         
    0x0000e9a4 lsls r1, r6, 2                                    |         r1 = r6 << 2;
    0x0000e9a6 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000e9aa ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000e9ac add r1, ip                                        |         r1 += ip;
    0x0000e9ae eors r1, r2                                       |         r1 ^= r2;
    0x0000e9b0 ldr r2, [r5, 0xc]                                 |         r2 = *((r5 + 0xc));
    0x0000e9b2 eors r6, r2                                       |         r6 ^= r2;
    0x0000e9b4 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000e9b6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e9ba ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000e9be lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000e9c0 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e9c4 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e9c6 add r2, ip                                        |         r2 += ip;
    0x0000e9c8 lsr.w ip, r1, 6                                   |         
    0x0000e9cc and ip, ip, 0x3fc                                 |         
    0x0000e9d0 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000e9d4 eor.w ip, ip, r2                                  |         
    0x0000e9d8 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000e9da and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e9de ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000e9e0 add r2, ip                                        |         r2 += ip;
    0x0000e9e2 eors r6, r2                                       |         r6 ^= r2;
    0x0000e9e4 ldr r2, [r5, 0x10]                                |         r2 = *((r5 + 0x10));
    0x0000e9e6 eors r1, r2                                       |         r1 ^= r2;
    0x0000e9e8 lsrs r2, r6, 0xe                                  |         r2 = r6 >> 0xe;
    0x0000e9ea and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e9ee ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000e9f2 lsrs r2, r6, 0x16                                 |         r2 = r6 >> 0x16;
    0x0000e9f4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000e9f8 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000e9fa add r2, ip                                        |         r2 += ip;
    0x0000e9fc lsr.w ip, r6, 6                                   |         
    0x0000ea00 and ip, ip, 0x3fc                                 |         
    0x0000ea04 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ea08 eor.w ip, ip, r2                                  |         
    0x0000ea0c lsls r2, r6, 2                                    |         r2 = r6 << 2;
    0x0000ea0e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea12 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ea14 add r2, ip                                        |         r2 += ip;
    0x0000ea16 eors r1, r2                                       |         r1 ^= r2;
    0x0000ea18 ldr r2, [r5, 0x14]                                |         r2 = *((r5 + 0x14));
    0x0000ea1a eors r6, r2                                       |         r6 ^= r2;
    0x0000ea1c lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000ea1e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea22 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ea26 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000ea28 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea2c ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ea2e add r2, ip                                        |         r2 += ip;
    0x0000ea30 lsr.w ip, r1, 6                                   |         
    0x0000ea34 and ip, ip, 0x3fc                                 |         
    0x0000ea38 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ea3c eor.w ip, ip, r2                                  |         
    0x0000ea40 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000ea42 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea46 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ea48 add r2, ip                                        |         r2 += ip;
    0x0000ea4a eors r6, r2                                       |         r6 ^= r2;
    0x0000ea4c ldr r2, [r5, 0x18]                                |         r2 = *((r5 + 0x18));
    0x0000ea4e eors r1, r2                                       |         r1 ^= r2;
    0x0000ea50 lsrs r2, r6, 0xe                                  |         r2 = r6 >> 0xe;
    0x0000ea52 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea56 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ea5a lsrs r2, r6, 0x16                                 |         r2 = r6 >> 0x16;
    0x0000ea5c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea60 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ea62 add r2, ip                                        |         r2 += ip;
    0x0000ea64 lsr.w ip, r6, 6                                   |         
    0x0000ea68 and ip, ip, 0x3fc                                 |         
    0x0000ea6c ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ea70 eor.w ip, ip, r2                                  |         
    0x0000ea74 lsls r2, r6, 2                                    |         r2 = r6 << 2;
    0x0000ea76 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea7a ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ea7c add r2, ip                                        |         r2 += ip;
    0x0000ea7e eors r1, r2                                       |         r1 ^= r2;
    0x0000ea80 ldr r2, [r5, 0x1c]                                |         r2 = *((r5 + 0x1c));
    0x0000ea82 eors r6, r2                                       |         r6 ^= r2;
    0x0000ea84 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000ea86 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea88 strb r7, [r7, 9]                                  |         *((r7 + 9)) = r7;
    0x0000ea8a ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ea8c stm r0!, {r1}                                     |         *(r0!) = r1;
    0x0000ea8e lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000ea90 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ea94 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ea96 add r2, ip                                        |         r2 += ip;
    0x0000ea98 lsr.w ip, r1, 6                                   |         
    0x0000ea9c and ip, ip, 0x3fc                                 |         
    0x0000eaa0 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000eaa4 eor.w ip, ip, r2                                  |         
    0x0000eaa8 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000eaaa and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eaae ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000eab0 add r2, ip                                        |         r2 += ip;
    0x0000eab2 eors r6, r2                                       |         r6 ^= r2;
    0x0000eab4 ldr r2, [r5, 0x20]                                |         r2 = *((r5 + 0x20));
    0x0000eab6 eors r1, r2                                       |         r1 ^= r2;
    0x0000eab8 lsrs r2, r6, 0xe                                  |         r2 = r6 >> 0xe;
    0x0000eaba and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eabe ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000eac2 lsrs r2, r6, 0x16                                 |         r2 = r6 >> 0x16;
    0x0000eac4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eac8 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000eaca add r2, ip                                        |         r2 += ip;
    0x0000eacc lsr.w ip, r6, 6                                   |         
    0x0000ead0 and ip, ip, 0x3fc                                 |         
    0x0000ead4 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ead8 eor.w ip, ip, r2                                  |         
    0x0000eadc lsls r2, r6, 2                                    |         r2 = r6 << 2;
    0x0000eade and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eae2 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000eae4 add r2, ip                                        |         r2 += ip;
    0x0000eae6 eors r1, r2                                       |         r1 ^= r2;
    0x0000eae8 ldr r2, [r5, 0x24]                                |         r2 = *((r5 + 0x24));
    0x0000eaea eors r6, r2                                       |         r6 ^= r2;
    0x0000eaec lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000eaee and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eaf2 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000eaf6 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000eaf8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eafc ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000eafe add r2, ip                                        |         r2 += ip;
    0x0000eb00 lsr.w ip, r1, 6                                   |         
    0x0000eb04 and ip, ip, 0x3fc                                 |         
    0x0000eb08 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000eb0c eor.w ip, ip, r2                                  |         
    0x0000eb10 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000eb12 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb16 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000eb18 add r2, ip                                        |         r2 += ip;
    0x0000eb1a eors r6, r2                                       |         r6 ^= r2;
    0x0000eb1c ldr r2, [r5, 0x28]                                |         r2 = *((r5 + 0x28));
    0x0000eb1e eors r1, r2                                       |         r1 ^= r2;
    0x0000eb20 lsrs r2, r6, 0xe                                  |         r2 = r6 >> 0xe;
    0x0000eb22 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb26 ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000eb2a lsrs r2, r6, 0x16                                 |         r2 = r6 >> 0x16;
    0x0000eb2c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb30 ldr.w ip, [r4, r2]                                |         ip = *((r4 + r2));
    0x0000eb34 lsrs r2, r6, 6                                    |         r2 = r6 >> 6;
    0x0000eb36 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb3a ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000eb3e add ip, r8                                        |         
    0x0000eb40 eor.w r2, r2, ip                                  |         r2 ^= ip;
    0x0000eb42 lsls r4, r1, 8                                    |         r4 = r1 << 8;
    0x0000eb44 lsl.w ip, r6, 2                                   |         
    0x0000eb46 lsrs r6, r0, 0x12                                 |         r6 = r0 >> 0x12;
    0x0000eb48 and ip, ip, 0x3fc                                 |         
    0x0000eb4c ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000eb4e stm r0!, {r2, r3}                                 |         *(r0!) = r2;
                                                                 |         *((r0! + 4)) = r3;
    0x0000eb50 add ip, r2                                        |         
    0x0000eb52 ldr r2, [r5, 0x2c]                                |         r2 = *((r5 + 0x2c));
    0x0000eb54 eor.w ip, ip, r1                                  |         
    0x0000eb58 eors r6, r2                                       |         r6 ^= r2;
    0x0000eb5a lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000eb5e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb62 ldr r1, [r7, r2]                                  |         r1 = *((r7 + r2));
    0x0000eb64 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000eb68 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb6c ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000eb6e add r2, r1                                        |         r2 += r1;
    0x0000eb70 lsr.w r1, ip, 6                                   |         r1 = ip >> 6;
    0x0000eb72 asrs r4, r3, 6                                    |         r4 = r3 >> 6;
    0x0000eb74 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000eb78 ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000eb7c eors r1, r2                                       |         r1 ^= r2;
    0x0000eb7e lsl.w r2, ip, 2                                   |         r2 = ip << 2;
    0x0000eb82 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eb86 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000eb88 add r2, r1                                        |         r2 += r1;
    0x0000eb8a ldr r1, [r5, 0x30]                                |         r1 = *((r5 + 0x30));
    0x0000eb8c eors r2, r6                                       |         r2 ^= r6;
    0x0000eb8e eor.w ip, ip, r1                                  |         
    0x0000eb92 lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000eb94 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000eb98 ldr.w r8, [r7, r1]                                |         r8 = *((r7 + r1));
    0x0000eb9c lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000eb9e and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000eba2 ldr r6, [r4, r1]                                  |         r6 = *((r4 + r1));
    0x0000eba4 lsrs r1, r2, 6                                    |         r1 = r2 >> 6;
    0x0000eba6 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ebaa ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000ebae add r6, r8                                        |         r6 += r8;
    0x0000ebb0 eors r1, r6                                       |         r1 ^= r6;
    0x0000ebb2 lsls r6, r2, 2                                    |         r6 = r2 << 2;
    0x0000ebb4 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000ebb8 ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000ebba add r6, r1                                        |         r6 += r1;
    0x0000ebbc eor.w r6, r6, ip                                  |         r6 ^= ip;
    0x0000ebc0 lsrs r1, r6, 0xe                                  |         r1 = r6 >> 0xe;
    0x0000ebc2 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ebc6 ldr.w ip, [r7, r1]                                |         ip = *((r7 + r1));
    0x0000ebca lsrs r1, r6, 0x16                                 |         r1 = r6 >> 0x16;
    0x0000ebcc and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ebd0 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000ebd2 add r1, ip                                        |         r1 += ip;
    0x0000ebd4 lsr.w ip, r6, 6                                   |         
    0x0000ebd8 and ip, ip, 0x3fc                                 |         
    0x0000ebdc ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ebe0 eor.w ip, ip, r1                                  |         
    0x0000ebe4 lsls r1, r6, 2                                    |         r1 = r6 << 2;
    0x0000ebe6 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ebea ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000ebec add ip, r1                                        |         
    0x0000ebee ldr r1, [r5, 0x34]                                |         r1 = *((r5 + 0x34));
    0x0000ebf0 eors r2, r1                                       |         r2 ^= r1;
    0x0000ebf2 eor.w r1, ip, r2                                  |         r1 = ip ^ r2;
    0x0000ebf6 ldr r2, [r5, 0x38]                                |         r2 = *((r5 + 0x38));
    0x0000ebf8 eors r6, r2                                       |         r6 ^= r2;
    0x0000ebfa lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000ebfc and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ec00 ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000ec04 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000ec06 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ec0a ldr.w ip, [r4, r2]                                |         ip = *((r4 + r2));
    0x0000ec0e lsrs r2, r1, 6                                    |         r2 = r1 >> 6;
    0x0000ec10 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ec14 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000ec18 add ip, r8                                        |         
    0x0000ec1a eor.w r2, r2, ip                                  |         r2 ^= ip;
    0x0000ec1e lsl.w ip, r1, 2                                   |         
    0x0000ec22 and ip, ip, 0x3fc                                 |         
    0x0000ec26 ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000ec2a add ip, r2                                        |         
    0x0000ec2c ldr r2, [r5, 0x3c]                                |         r2 = *((r5 + 0x3c));
    0x0000ec2e eor.w ip, ip, r6                                  |         
    0x0000ec32 eors r1, r2                                       |         r1 ^= r2;
    0x0000ec34 lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000ec38 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ec3c ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000ec40 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000ec44 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ec48 ldr r6, [r4, r2]                                  |         r6 = *((r4 + r2));
    0x0000ec4a lsr.w r2, ip, 6                                   |         r2 = ip >> 6;
    0x0000ec4e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ec52 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000ec56 add r6, r8                                        |         r6 += r8;
    0x0000ec58 eors r2, r6                                       |         r2 ^= r6;
    0x0000ec5a lsl.w r6, ip, 2                                   |         r6 = ip << 2;
    0x0000ec5e and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000ec62 ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000ec64 add r6, r2                                        |         r6 += r2;
    0x0000ec66 ldr r2, [r5, 0x40]                                |         r2 = *((r5 + 0x40));
    0x0000ec68 eors r6, r1                                       |         r6 ^= r1;
    0x0000ec6a lsrs r1, r6, 0xe                                  |         r1 = r6 >> 0xe;
    0x0000ec6c eor.w r2, ip, r2                                  |         r2 = ip ^ r2;
    0x0000ec70 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ec74 ldr.w r8, [r7, r1]                                |         r8 = *((r7 + r1));
    0x0000ec78 lsrs r1, r6, 0x16                                 |         r1 = r6 >> 0x16;
    0x0000ec7a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ec7e ldr.w ip, [r4, r1]                                |         ip = *((r4 + r1));
    0x0000ec82 lsrs r1, r6, 6                                    |         r1 = r6 >> 6;
    0x0000ec84 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ec88 ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000ec8c add ip, r8                                        |         
    0x0000ec8e eor.w r1, r1, ip                                  |         r1 ^= ip;
    0x0000ec92 lsl.w ip, r6, 2                                   |         
    0x0000ec96 and ip, ip, 0x3fc                                 |         
    0x0000ec9a ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000ec9e add ip, r1                                        |         
    0x0000eca0 eor.w ip, ip, r2                                  |         
    0x0000eca4 ldr r2, [r5, 0x44]                                |         r2 = *((r5 + 0x44));
    0x0000eca6 eors r6, r2                                       |         r6 ^= r2;
    0x0000eca8 str r6, [r0], 0x10                                |         *(r0) = r6;
                                                                 |         r0 += 0x10;
    0x0000ecac cmp r0, r5                                        |         
    0x0000ecae str ip, [r0, -0xc]                                |         *((r0 - 0xc)) = ip;
    0x0000ecb2 ldr r1, [r5]                                      |         r1 = *(r5);
    0x0000ecb4 ldr.w r2, [r5, 0x90]                              |         r2 = *((r5 + 0x90));
    0x0000ecb8 eor.w r2, r2, r1                                  |         r2 ^= r1;
    0x0000ecbc ldr.w r1, [r5, 0x94]                              |         r1 = *((r5 + 0x94));
    0x0000ecc0 eor.w r2, r2, r6                                  |         r2 ^= r6;
    0x0000ecc4 lsr.w r6, r2, 0xe                                 |         r6 = r2 >> 0xe;
    0x0000ecc8 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000eccc ldr.w r8, [r7, r6]                                |         r8 = *((r7 + r6));
    0x0000ecd0 lsr.w r6, r2, 0x16                                |         r6 = r2 >> 0x16;
    0x0000ecd4 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000ecd8 ldr r6, [r4, r6]                                  |         r6 = *((r4 + r6));
    0x0000ecda add r6, r8                                        |         r6 += r8;
    0x0000ecdc lsr.w r8, r2, 6                                   |         r8 = r2 >> 6;
    0x0000ece0 and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000ece4 ldr.w r8, [lr, r8]                                |         r8 = *((lr + r8));
    0x0000ece8 eor.w r8, r8, r6                                  |         r8 ^= r6;
    0x0000ecec lsl.w r6, r2, 2                                   |         r6 = r2 << 2;
    0x0000ecf0 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000ecf4 ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000ecf6 add r8, r6                                        |         r8 += r6;
    0x0000ecf8 ldr r6, [r5, 4]                                   |         r6 = *((r5 + 4));
    0x0000ecfa eor.w r1, r1, r6                                  |         r1 ^= r6;
    0x0000ecfe eor.w r1, r1, ip                                  |         r1 ^= ip;
    0x0000ed02 eor.w r6, r8, r1                                  |         r6 = r8 ^ r1;
    0x0000ed06 lsr.w r1, r6, 0xe                                 |         r1 = r6 >> 0xe;
    0x0000ed0a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ed0e ldr.w ip, [r7, r1]                                |         ip = *((r7 + r1));
    0x0000ed12 lsr.w r1, r6, 0x16                                |         r1 = r6 >> 0x16;
    0x0000ed16 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ed1a ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000ed1c add r1, ip                                        |         r1 += ip;
    0x0000ed1e lsr.w ip, r6, 6                                   |         
    0x0000ed22 and ip, ip, 0x3fc                                 |         
    0x0000ed26 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ed2a eor.w ip, ip, r1                                  |         
    0x0000ed2e lsl.w r1, r6, 2                                   |         r1 = r6 << 2;
    0x0000ed32 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000ed36 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000ed38 add ip, r1                                        |         
    0x0000ed3a ldr r1, [r5, 8]                                   |         r1 = *((r5 + 8));
    0x0000ed3c eor.w r2, r2, r1                                  |         r2 ^= r1;
    0x0000ed40 eor.w r1, ip, r2                                  |         r1 = ip ^ r2;
    0x0000ed44 ldr r2, [r5, 0xc]                                 |         r2 = *((r5 + 0xc));
    0x0000ed46 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000ed4a lsr.w r2, r1, 0xe                                 |         r2 = r1 >> 0xe;
    0x0000ed4e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ed52 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ed56 lsr.w r2, r1, 0x16                                |         r2 = r1 >> 0x16;
    0x0000ed5a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ed5e ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ed60 add r2, ip                                        |         r2 += ip;
    0x0000ed62 lsr.w ip, r1, 6                                   |         
    0x0000ed66 and ip, ip, 0x3fc                                 |         
    0x0000ed6a ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ed6e eor.w ip, ip, r2                                  |         
    0x0000ed72 lsl.w r2, r1, 2                                   |         r2 = r1 << 2;
    0x0000ed76 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ed7a ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ed7c add r2, ip                                        |         r2 += ip;
    0x0000ed7e eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000ed82 ldr r2, [r5, 0x10]                                |         r2 = *((r5 + 0x10));
    0x0000ed84 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000ed88 lsr.w r2, r6, 0xe                                 |         r2 = r6 >> 0xe;
    0x0000ed8c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ed90 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ed94 lsr.w r2, r6, 0x16                                |         r2 = r6 >> 0x16;
    0x0000ed98 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ed9c ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ed9e add r2, ip                                        |         r2 += ip;
    0x0000eda0 lsr.w ip, r6, 6                                   |         
    0x0000eda4 and ip, ip, 0x3fc                                 |         
    0x0000eda8 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000edac eor.w ip, ip, r2                                  |         
    0x0000edb0 lsl.w r2, r6, 2                                   |         r2 = r6 << 2;
    0x0000edb4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000edb8 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000edba add r2, ip                                        |         r2 += ip;
    0x0000edbc eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000edc0 ldr r2, [r5, 0x14]                                |         r2 = *((r5 + 0x14));
    0x0000edc2 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000edc6 lsr.w r2, r1, 0xe                                 |         r2 = r1 >> 0xe;
    0x0000edca and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000edce ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000edd2 lsr.w r2, r1, 0x16                                |         r2 = r1 >> 0x16;
    0x0000edd6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000edda ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000eddc add r2, ip                                        |         r2 += ip;
    0x0000edde lsr.w ip, r1, 6                                   |         
    0x0000ede2 and ip, ip, 0x3fc                                 |         
    0x0000ede6 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000edea eor.w ip, ip, r2                                  |         
    0x0000edee lsl.w r2, r1, 2                                   |         r2 = r1 << 2;
    0x0000edf2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000edf6 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000edf8 add r2, ip                                        |         r2 += ip;
    0x0000edfa eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000edfe ldr r2, [r5, 0x18]                                |         r2 = *((r5 + 0x18));
    0x0000ee00 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000ee04 lsr.w r2, r6, 0xe                                 |         r2 = r6 >> 0xe;
    0x0000ee08 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee0c ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ee10 lsr.w r2, r6, 0x16                                |         r2 = r6 >> 0x16;
    0x0000ee14 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee18 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ee1a add r2, ip                                        |         r2 += ip;
    0x0000ee1c lsr.w ip, r6, 6                                   |         
    0x0000ee20 and ip, ip, 0x3fc                                 |         
    0x0000ee24 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ee28 eor.w ip, ip, r2                                  |         
    0x0000ee2c lsl.w r2, r6, 2                                   |         r2 = r6 << 2;
    0x0000ee30 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee34 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ee36 add r2, ip                                        |         r2 += ip;
    0x0000ee38 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000ee3c ldr r2, [r5, 0x1c]                                |         r2 = *((r5 + 0x1c));
    0x0000ee3e eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000ee42 lsr.w r2, r1, 0xe                                 |         r2 = r1 >> 0xe;
    0x0000ee46 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee4a ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ee4e lsr.w r2, r1, 0x16                                |         r2 = r1 >> 0x16;
    0x0000ee52 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee56 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ee58 add r2, ip                                        |         r2 += ip;
    0x0000ee5a lsr.w ip, r1, 6                                   |         
    0x0000ee5e and ip, ip, 0x3fc                                 |         
    0x0000ee62 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ee66 eor.w ip, ip, r2                                  |         
    0x0000ee6a lsl.w r2, r1, 2                                   |         r2 = r1 << 2;
    0x0000ee6e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee72 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ee74 add r2, ip                                        |         r2 += ip;
    0x0000ee76 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000ee7a ldr r2, [r5, 0x20]                                |         r2 = *((r5 + 0x20));
    0x0000ee7c eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000ee80 lsr.w r2, r6, 0xe                                 |         r2 = r6 >> 0xe;
    0x0000ee84 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee88 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ee8c lsr.w r2, r6, 0x16                                |         r2 = r6 >> 0x16;
    0x0000ee90 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ee94 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ee96 add r2, ip                                        |         r2 += ip;
    0x0000ee98 lsr.w ip, r6, 6                                   |         
    0x0000ee9c and ip, ip, 0x3fc                                 |         
    0x0000eea0 ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000eea4 eor.w ip, ip, r2                                  |         
    0x0000eea8 lsl.w r2, r6, 2                                   |         r2 = r6 << 2;
    0x0000eeac and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eeb0 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000eeb2 add r2, ip                                        |         r2 += ip;
    0x0000eeb4 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000eeb8 ldr r2, [r5, 0x24]                                |         r2 = *((r5 + 0x24));
    0x0000eeba eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000eebe lsr.w r2, r1, 0xe                                 |         r2 = r1 >> 0xe;
    0x0000eec2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eec6 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000eeca lsr.w r2, r1, 0x16                                |         r2 = r1 >> 0x16;
    0x0000eece and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eed2 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000eed4 add r2, ip                                        |         r2 += ip;
    0x0000eed6 lsr.w ip, r1, 6                                   |         
    0x0000eeda and ip, ip, 0x3fc                                 |         
    0x0000eede ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000eee2 eor.w ip, ip, r2                                  |         
    0x0000eee6 lsl.w r2, r1, 2                                   |         r2 = r1 << 2;
    0x0000eeea and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000eeee ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000eef0 add r2, ip                                        |         r2 += ip;
    0x0000eef2 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000eef6 ldr r2, [r5, 0x28]                                |         r2 = *((r5 + 0x28));
    0x0000eef8 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000eefc lsr.w r2, r6, 0xe                                 |         r2 = r6 >> 0xe;
    0x0000ef00 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef04 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ef08 lsr.w r2, r6, 0x16                                |         r2 = r6 >> 0x16;
    0x0000ef0c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef10 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ef12 add r2, ip                                        |         r2 += ip;
    0x0000ef14 lsr.w ip, r6, 6                                   |         
    0x0000ef18 and ip, ip, 0x3fc                                 |         
    0x0000ef1c ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ef20 eor.w ip, ip, r2                                  |         
    0x0000ef24 lsl.w r2, r6, 2                                   |         r2 = r6 << 2;
    0x0000ef28 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef2c ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ef2e add r2, ip                                        |         r2 += ip;
    0x0000ef30 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000ef34 ldr r2, [r5, 0x2c]                                |         r2 = *((r5 + 0x2c));
    0x0000ef36 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000ef3a lsr.w r2, r1, 0xe                                 |         r2 = r1 >> 0xe;
    0x0000ef3e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef42 ldr.w ip, [r7, r2]                                |         ip = *((r7 + r2));
    0x0000ef46 lsr.w r2, r1, 0x16                                |         r2 = r1 >> 0x16;
    0x0000ef4a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef4e ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000ef50 add r2, ip                                        |         r2 += ip;
    0x0000ef52 lsr.w ip, r1, 6                                   |         
    0x0000ef56 and ip, ip, 0x3fc                                 |         
    0x0000ef5a ldr.w ip, [lr, ip]                                |         ip = *((lr + ip));
    0x0000ef5e eor.w ip, ip, r2                                  |         
    0x0000ef62 lsl.w r2, r1, 2                                   |         r2 = r1 << 2;
    0x0000ef66 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef6a ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000ef6c add r2, ip                                        |         r2 += ip;
    0x0000ef6e eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000ef72 ldr r2, [r5, 0x30]                                |         r2 = *((r5 + 0x30));
    0x0000ef74 eor.w r1, r1, r2                                  |         r1 ^= r2;
    0x0000ef78 lsr.w r2, r6, 0xe                                 |         r2 = r6 >> 0xe;
    0x0000ef7c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef80 ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000ef84 lsr.w r2, r6, 0x16                                |         r2 = r6 >> 0x16;
    0x0000ef88 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef8c ldr.w ip, [r4, r2]                                |         ip = *((r4 + r2));
    0x0000ef90 lsr.w r2, r6, 6                                   |         r2 = r6 >> 6;
    0x0000ef94 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000ef98 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000ef9c add ip, r8                                        |         
    0x0000ef9e eor.w r2, r2, ip                                  |         r2 ^= ip;
    0x0000efa2 lsl.w ip, r6, 2                                   |         
    0x0000efa6 and ip, ip, 0x3fc                                 |         
    0x0000efaa ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000efae add ip, r2                                        |         
    0x0000efb0 ldr r2, [r5, 0x34]                                |         r2 = *((r5 + 0x34));
    0x0000efb2 eor.w ip, ip, r1                                  |         
    0x0000efb6 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000efba lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000efbe and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000efc2 ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000efc6 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000efca and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000efce ldr r1, [r4, r2]                                  |         r1 = *((r4 + r2));
    0x0000efd0 lsr.w r2, ip, 6                                   |         r2 = ip >> 6;
    0x0000efd4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000efd8 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000efdc add r1, r8                                        |         r1 += r8;
    0x0000efde eor.w r2, r2, r1                                  |         r2 ^= r1;
    0x0000efe2 lsl.w r1, ip, 2                                   |         r1 = ip << 2;
    0x0000efe6 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000efea ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000efec add r1, r2                                        |         r1 += r2;
    0x0000efee ldr r2, [r5, 0x38]                                |         r2 = *((r5 + 0x38));
    0x0000eff0 eor.w r1, r1, r6                                  |         r1 ^= r6;
    0x0000eff4 eor.w ip, ip, r2                                  |         
    0x0000eff8 lsr.w r2, r1, 0xe                                 |         r2 = r1 >> 0xe;
    0x0000effc and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f000 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f002 lsr.w r2, r1, 0x16                                |         r2 = r1 >> 0x16;
    0x0000f006 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f00a ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f00c add r2, r6                                        |         r2 += r6;
    0x0000f00e lsr.w r6, r1, 6                                   |         r6 = r1 >> 6;
    0x0000f012 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f016 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f01a eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000f01e lsl.w r2, r1, 2                                   |         r2 = r1 << 2;
    0x0000f022 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f026 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f028 add r2, r6                                        |         r2 += r6;
    0x0000f02a eor.w ip, r2, ip                                  |         
    0x0000f02e lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f032 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f036 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f038 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f03c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f040 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f042 add r2, r6                                        |         r2 += r6;
    0x0000f044 lsr.w r6, ip, 6                                   |         r6 = ip >> 6;
    0x0000f048 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f04c ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f050 eor.w r6, r6, r2                                  |         r6 ^= r2;
    0x0000f054 lsl.w r2, ip, 2                                   |         r2 = ip << 2;
    0x0000f058 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f05c ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f05e add r2, r6                                        |         r2 += r6;
    0x0000f060 ldr r6, [r5, 0x3c]                                |         r6 = *((r5 + 0x3c));
    0x0000f062 eor.w r1, r1, r6                                  |         r1 ^= r6;
    0x0000f066 eor.w r2, r2, r1                                  |         r2 ^= r1;
    0x0000f06a ldr r1, [r5, 0x40]                                |         r1 = *((r5 + 0x40));
    0x0000f06c eor.w ip, ip, r1                                  |         
    0x0000f070 lsr.w r1, r2, 0xe                                 |         r1 = r2 >> 0xe;
    0x0000f074 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f078 ldr.w r8, [r7, r1]                                |         r8 = *((r7 + r1));
    0x0000f07c lsr.w r1, r2, 0x16                                |         r1 = r2 >> 0x16;
    0x0000f080 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f084 ldr r6, [r4, r1]                                  |         r6 = *((r4 + r1));
    0x0000f086 lsr.w r1, r2, 6                                   |         r1 = r2 >> 6;
    0x0000f08a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f08e ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000f092 add r6, r8                                        |         r6 += r8;
    0x0000f094 eor.w r1, r1, r6                                  |         r1 ^= r6;
    0x0000f098 lsl.w r6, r2, 2                                   |         r6 = r2 << 2;
    0x0000f09c and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f0a0 ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000f0a2 add r6, r1                                        |         r6 += r1;
    0x0000f0a4 ldr r1, [r5, 0x44]                                |         r1 = *((r5 + 0x44));
    0x0000f0a6 eor.w sb, r6, ip                                  |         sb = r6 ^ ip;
    0x0000f0aa eor.w r2, r2, r1                                  |         r2 ^= r1;
    0x0000f0ae strd r2, sb, [r0, -0x8]                           |         __asm ("strd r2, sb, [r0, -0x8]");
    0x0000f0b2 bne.w 0xe92a                                      |         
                                                                 |     } while (r0 != r5);
    0x0000f0b6 ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x0000f0b8 add.w r2, r4, 0x1000                              |     r2 = r4 + 0x1000;
    0x0000f0bc adds r2, 8                                        |     r2 += 8;
    0x0000f0be cmp r2, r1                                        |     
    0x0000f0c0 ite hi                                            |     
                                                                 |     if (r2 <= r1) {
    0x0000f0c2 movhi r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r2 > r1) {
    0x0000f0c4 movls r2, 9                                       |         r2 = 9;
                                                                 |     }
    0x0000f0c6 add.w r2, r2, 0x200                               |     r2 += 0x200;
    0x0000f0ca add.w ip, r4, r2, lsl 3                           |     
    0x0000f0ce add.w r2, r4, 0x1040                              |     r2 = r4 + 0x1040;
    0x0000f0d2 str r2, [sp, 0x18]                                |     var_18h = r2;
    0x0000f0d4 mov sb, ip                                        |     sb = ip;
                                                                 | label_3:
    0x0000f0d6 ldr.w ip, [sp, 0x14]                              |     ip = var_14h;
    0x0000f0da mov r6, r5                                        |     r6 = r5;
                                                                 |     do {
    0x0000f0dc ldrd r1, r2, [r6]                                 |         __asm ("ldrd r1, r2, [r6]");
    0x0000f0e0 adds r6, 8                                        |         r6 += 8;
    0x0000f0e2 ldr r0, [r6, 0x40]                                |         r0 = *((r6 + 0x40));
    0x0000f0e4 eors r1, r0                                       |         r1 ^= r0;
    0x0000f0e6 str r1, [r6, -0x8]                                |         *((r6 - 0x8)) = r1;
    0x0000f0ea ldr r1, [r6, 0x44]                                |         r1 = *((r6 + 0x44));
    0x0000f0ec eors r2, r1                                       |         r2 ^= r1;
    0x0000f0ee str r2, [r6, -0x4]                                |         *((r6 - 0x4)) = r2;
    0x0000f0f2 cmp ip, r6                                        |         
    0x0000f0f4 bne 0xf0dc                                        |         
                                                                 |     } while (ip != r6);
    0x0000f0f6 ldrd ip, r0, [r5, 0x40]                           |     __asm ("ldrd ip, r0, [r5, 0x40]");
    0x0000f0fa movs r2, 2                                        |     r2 = 2;
    0x0000f0fc str r2, [sp, 0xc]                                 |     var_ch_2 = r2;
                                                                 | label_2:
    0x0000f0fe mov.w r8, 0                                       |     r8 = 0;
    0x0000f102 mov r1, r5                                        |     r1 = r5;
    0x0000f104 mov r6, r8                                        |     r6 = r8;
    0x0000f106 mov r2, r8                                        |     r2 = r8;
    0x0000f108 mov r8, ip                                        |     r8 = ip;
    0x0000f10a str r0, [sp, 8]                                   |     var_8h_2 = r0;
    0x0000f10c mov ip, r6                                        |     
    0x0000f10e mov r6, r8                                        |     r6 = r8;
    0x0000f110 b 0xf12a                                          |     
                                                                 |     while (r1 != sb) {
    0x0000f124 ldrd r6, r0, [r5, 0x40]                           |         __asm ("ldrd r6, r0, [r5, 0x40]");
    0x0000f128 str r0, [sp, 8]                                   |         var_8h_2 = r0;
    0x0000f12a ldr r0, [r5]                                      |         r0 = *(r5);
    0x0000f12c eor.w sl, ip, r0                                  |         sl = ip ^ r0;
    0x0000f130 ldr r0, [r5, 4]                                   |         r0 = *((r5 + 4));
    0x0000f132 lsr.w ip, sl, 0xe                                 |         
    0x0000f136 and ip, ip, 0x3fc                                 |         
    0x0000f13a ldr.w fp, [r7, ip]                                |         fp = *((r7 + ip));
    0x0000f13e lsr.w ip, sl, 0x16                                |         
    0x0000f142 and ip, ip, 0x3fc                                 |         
    0x0000f146 ldr.w ip, [r4, ip]                                |         ip = *((r4 + ip));
    0x0000f14a add ip, fp                                        |         
    0x0000f14c lsr.w fp, sl, 6                                   |         
    0x0000f150 and fp, fp, 0x3fc                                 |         
    0x0000f154 ldr.w fp, [lr, fp]                                |         fp = *((lr + fp));
    0x0000f158 eor.w fp, fp, ip                                  |         
    0x0000f15c lsl.w ip, sl, 2                                   |         
    0x0000f160 and ip, ip, 0x3fc                                 |         
    0x0000f164 ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000f168 add ip, fp                                        |         
    0x0000f16a eor.w ip, ip, r0                                  |         
    0x0000f16e eor.w ip, ip, r2                                  |         
    0x0000f172 ldr r2, [r5, 8]                                   |         r2 = *((r5 + 8));
    0x0000f174 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f178 lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f17c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f180 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f184 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f188 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f18c ldr.w r8, [r4, r2]                                |         r8 = *((r4 + r2));
    0x0000f190 lsr.w r2, ip, 6                                   |         r2 = ip >> 6;
    0x0000f194 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f198 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f19c add r8, fp                                        |         r8 += fp;
    0x0000f19e eor.w r2, r2, r8                                  |         r2 ^= r8;
    0x0000f1a2 lsl.w r8, ip, 2                                   |         r8 = ip << 2;
    0x0000f1a6 and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000f1aa ldr.w r8, [r3, r8]                                |         r8 = *((r3 + r8));
    0x0000f1ae add r8, r2                                        |         r8 += r2;
    0x0000f1b0 ldr r2, [r5, 0xc]                                 |         r2 = *((r5 + 0xc));
    0x0000f1b2 eor.w r8, r8, sl                                  |         r8 ^= sl;
    0x0000f1b6 eor.w ip, ip, r2                                  |         
    0x0000f1ba lsr.w r2, r8, 0xe                                 |         r2 = r8 >> 0xe;
    0x0000f1be and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f1c2 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f1c6 lsr.w r2, r8, 0x16                                |         r2 = r8 >> 0x16;
    0x0000f1ca and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f1ce ldr.w sl, [r4, r2]                                |         sl = *((r4 + r2));
    0x0000f1d2 lsr.w r2, r8, 6                                   |         r2 = r8 >> 6;
    0x0000f1d6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f1da ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f1de add sl, fp                                        |         sl += fp;
    0x0000f1e0 eor.w r2, r2, sl                                  |         r2 ^= sl;
    0x0000f1e4 lsl.w sl, r8, 2                                   |         sl = r8 << 2;
    0x0000f1e8 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f1ec ldr.w sl, [r3, sl]                                |         sl = *((r3 + sl));
    0x0000f1f0 add sl, r2                                        |         sl += r2;
    0x0000f1f2 ldr r2, [r5, 0x10]                                |         r2 = *((r5 + 0x10));
    0x0000f1f4 eor.w sl, sl, ip                                  |         sl ^= ip;
    0x0000f1f8 eor.w r8, r8, r2                                  |         r8 ^= r2;
    0x0000f1fc lsr.w r2, sl, 0xe                                 |         r2 = sl >> 0xe;
    0x0000f200 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f204 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f208 lsr.w r2, sl, 0x16                                |         r2 = sl >> 0x16;
    0x0000f20c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f210 ldr.w ip, [r4, r2]                                |         ip = *((r4 + r2));
    0x0000f214 lsr.w r2, sl, 6                                   |         r2 = sl >> 6;
    0x0000f218 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f21c ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f220 add ip, fp                                        |         
    0x0000f222 eor.w r2, r2, ip                                  |         r2 ^= ip;
    0x0000f226 lsl.w ip, sl, 2                                   |         
    0x0000f22a and ip, ip, 0x3fc                                 |         
    0x0000f22e ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000f232 add ip, r2                                        |         
    0x0000f234 ldr r2, [r5, 0x14]                                |         r2 = *((r5 + 0x14));
    0x0000f236 eor.w ip, ip, r8                                  |         
    0x0000f23a eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f23e lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f242 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f246 ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000f24a lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f24e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f252 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f254 add r2, r8                                        |         r2 += r8;
    0x0000f256 lsr.w r8, ip, 6                                   |         r8 = ip >> 6;
    0x0000f25a and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000f25e ldr.w r8, [lr, r8]                                |         r8 = *((lr + r8));
    0x0000f262 eor.w r8, r8, r2                                  |         r8 ^= r2;
    0x0000f266 lsl.w r2, ip, 2                                   |         r2 = ip << 2;
    0x0000f26a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f26e ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f270 add r2, r8                                        |         r2 += r8;
    0x0000f272 eor.w r8, r2, sl                                  |         r8 = r2 ^ sl;
    0x0000f276 ldr r2, [r5, 0x18]                                |         r2 = *((r5 + 0x18));
    0x0000f278 eor.w ip, ip, r2                                  |         
    0x0000f27c lsr.w r2, r8, 0xe                                 |         r2 = r8 >> 0xe;
    0x0000f280 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f284 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000f288 lsr.w r2, r8, 0x16                                |         r2 = r8 >> 0x16;
    0x0000f28c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f290 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f292 add r2, sl                                        |         r2 += sl;
    0x0000f294 lsr.w sl, r8, 6                                   |         sl = r8 >> 6;
    0x0000f298 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f29c ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000f2a0 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f2a4 lsl.w r2, r8, 2                                   |         r2 = r8 << 2;
    0x0000f2a8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f2ac ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f2ae add r2, sl                                        |         r2 += sl;
    0x0000f2b0 eor.w ip, r2, ip                                  |         
    0x0000f2b4 lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f2b8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f2bc ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f2c0 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f2c4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f2c8 ldr.w sl, [r4, r2]                                |         sl = *((r4 + r2));
    0x0000f2cc lsr.w r2, ip, 6                                   |         r2 = ip >> 6;
    0x0000f2d0 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f2d4 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f2d8 add sl, fp                                        |         sl += fp;
    0x0000f2da eor.w r2, r2, sl                                  |         r2 ^= sl;
    0x0000f2de lsl.w sl, ip, 2                                   |         sl = ip << 2;
    0x0000f2e2 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f2e6 ldr.w sl, [r3, sl]                                |         sl = *((r3 + sl));
    0x0000f2ea add sl, r2                                        |         sl += r2;
    0x0000f2ec ldr r2, [r5, 0x1c]                                |         r2 = *((r5 + 0x1c));
    0x0000f2ee eor.w r2, r8, r2                                  |         r2 = r8 ^ r2;
    0x0000f2f2 eor.w r8, sl, r2                                  |         r8 = sl ^ r2;
    0x0000f2f6 ldr r2, [r5, 0x20]                                |         r2 = *((r5 + 0x20));
    0x0000f2f8 eor.w ip, ip, r2                                  |         
    0x0000f2fc lsr.w r2, r8, 0xe                                 |         r2 = r8 >> 0xe;
    0x0000f300 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f304 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000f308 lsr.w r2, r8, 0x16                                |         r2 = r8 >> 0x16;
    0x0000f30c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f310 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f312 add r2, sl                                        |         r2 += sl;
    0x0000f314 lsr.w sl, r8, 6                                   |         sl = r8 >> 6;
    0x0000f318 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f31c ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000f320 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f324 lsl.w r2, r8, 2                                   |         r2 = r8 << 2;
    0x0000f328 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f32c ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f32e add r2, sl                                        |         r2 += sl;
    0x0000f330 eor.w ip, r2, ip                                  |         
    0x0000f334 ldr r2, [r5, 0x24]                                |         r2 = *((r5 + 0x24));
    0x0000f336 eor.w r8, r8, r2                                  |         r8 ^= r2;
    0x0000f33a lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f33e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f342 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f346 lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f34a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f34e ldr.w sl, [r4, r2]                                |         sl = *((r4 + r2));
    0x0000f352 lsr.w r2, ip, 6                                   |         r2 = ip >> 6;
    0x0000f356 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f35a ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f35e add sl, fp                                        |         sl += fp;
    0x0000f360 eor.w r2, r2, sl                                  |         r2 ^= sl;
    0x0000f364 lsl.w sl, ip, 2                                   |         sl = ip << 2;
    0x0000f368 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f36c ldr.w sl, [r3, sl]                                |         sl = *((r3 + sl));
    0x0000f370 add sl, r2                                        |         sl += r2;
    0x0000f372 ldr r2, [r5, 0x28]                                |         r2 = *((r5 + 0x28));
    0x0000f374 eor.w sl, sl, r8                                  |         sl ^= r8;
    0x0000f378 eor.w ip, ip, r2                                  |         
    0x0000f37c lsr.w r2, sl, 0xe                                 |         r2 = sl >> 0xe;
    0x0000f380 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f384 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f388 lsr.w r2, sl, 0x16                                |         r2 = sl >> 0x16;
    0x0000f38c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f390 ldr.w r8, [r4, r2]                                |         r8 = *((r4 + r2));
    0x0000f394 lsr.w r2, sl, 6                                   |         r2 = sl >> 6;
    0x0000f398 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f39c ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f3a0 add r8, fp                                        |         r8 += fp;
    0x0000f3a2 eor.w r2, r2, r8                                  |         r2 ^= r8;
    0x0000f3a6 lsl.w r8, sl, 2                                   |         r8 = sl << 2;
    0x0000f3aa and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000f3ae ldr.w r8, [r3, r8]                                |         r8 = *((r3 + r8));
    0x0000f3b2 add r8, r2                                        |         r8 += r2;
    0x0000f3b4 ldr r2, [r5, 0x2c]                                |         r2 = *((r5 + 0x2c));
    0x0000f3b6 eor.w r8, r8, ip                                  |         r8 ^= ip;
    0x0000f3ba eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f3be lsr.w r2, r8, 0xe                                 |         r2 = r8 >> 0xe;
    0x0000f3c2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f3c6 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f3ca lsr.w r2, r8, 0x16                                |         r2 = r8 >> 0x16;
    0x0000f3ce and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f3d2 ldr.w ip, [r4, r2]                                |         ip = *((r4 + r2));
    0x0000f3d6 lsr.w r2, r8, 6                                   |         r2 = r8 >> 6;
    0x0000f3da and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f3de ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f3e2 add ip, fp                                        |         
    0x0000f3e4 eor.w r2, r2, ip                                  |         r2 ^= ip;
    0x0000f3e8 lsl.w ip, r8, 2                                   |         
    0x0000f3ec and ip, ip, 0x3fc                                 |         
    0x0000f3f0 ldr.w ip, [r3, ip]                                |         ip = *((r3 + ip));
    0x0000f3f4 add ip, r2                                        |         
    0x0000f3f6 ldr r2, [r5, 0x30]                                |         r2 = *((r5 + 0x30));
    0x0000f3f8 eor.w ip, ip, sl                                  |         
    0x0000f3fc eor.w r8, r8, r2                                  |         r8 ^= r2;
    0x0000f400 lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f404 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f408 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000f40c lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f410 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f414 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f416 add r2, sl                                        |         r2 += sl;
    0x0000f418 lsr.w sl, ip, 6                                   |         sl = ip >> 6;
    0x0000f41c and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f420 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000f424 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f428 lsl.w r2, ip, 2                                   |         r2 = ip << 2;
    0x0000f42c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f430 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f432 add r2, sl                                        |         r2 += sl;
    0x0000f434 eor.w r8, r2, r8                                  |         r8 = r2 ^ r8;
    0x0000f438 lsr.w r2, r8, 0xe                                 |         r2 = r8 >> 0xe;
    0x0000f43c lsl.w fp, r8, 2                                   |         
    0x0000f440 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f444 and fp, fp, 0x3fc                                 |         
    0x0000f448 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000f44c lsr.w r2, r8, 0x16                                |         r2 = r8 >> 0x16;
    0x0000f450 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f454 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f456 add r2, sl                                        |         r2 += sl;
    0x0000f458 lsr.w sl, r8, 6                                   |         sl = r8 >> 6;
    0x0000f45c and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f460 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000f464 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f468 ldr r2, [r5, 0x34]                                |         r2 = *((r5 + 0x34));
    0x0000f46a ldr r0, [sp, 8]                                   |         r0 = var_8h_2;
    0x0000f46c eor.w ip, ip, r2                                  |         
    0x0000f470 ldr.w r2, [r3, fp]                                |         r2 = *((r3 + fp));
    0x0000f474 add r2, sl                                        |         r2 += sl;
    0x0000f476 eor.w ip, r2, ip                                  |         
    0x0000f47a ldr r2, [r5, 0x38]                                |         r2 = *((r5 + 0x38));
    0x0000f47c eor.w r8, r8, r2                                  |         r8 ^= r2;
    0x0000f480 lsr.w r2, ip, 0xe                                 |         r2 = ip >> 0xe;
    0x0000f484 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f488 ldr.w fp, [r7, r2]                                |         fp = *((r7 + r2));
    0x0000f48c lsr.w r2, ip, 0x16                                |         r2 = ip >> 0x16;
    0x0000f490 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f494 ldr.w sl, [r4, r2]                                |         sl = *((r4 + r2));
    0x0000f498 lsr.w r2, ip, 6                                   |         r2 = ip >> 6;
    0x0000f49c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f4a0 ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f4a4 add sl, fp                                        |         sl += fp;
    0x0000f4a6 eor.w r2, r2, sl                                  |         r2 ^= sl;
    0x0000f4aa lsl.w sl, ip, 2                                   |         sl = ip << 2;
    0x0000f4ae and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f4b2 ldr.w sl, [r3, sl]                                |         sl = *((r3 + sl));
    0x0000f4b6 add sl, r2                                        |         sl += r2;
    0x0000f4b8 ldr r2, [r5, 0x3c]                                |         r2 = *((r5 + 0x3c));
    0x0000f4ba eor.w sl, sl, r8                                  |         sl ^= r8;
    0x0000f4be eor.w ip, ip, r2                                  |         
    0x0000f4c2 lsr.w r2, sl, 0xe                                 |         r2 = sl >> 0xe;
    0x0000f4c6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f4ca ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000f4ce lsr.w r2, sl, 0x16                                |         r2 = sl >> 0x16;
    0x0000f4d2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f4d6 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f4d8 add r2, r8                                        |         r2 += r8;
    0x0000f4da lsr.w r8, sl, 6                                   |         r8 = sl >> 6;
    0x0000f4de and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000f4e2 ldr.w r8, [lr, r8]                                |         r8 = *((lr + r8));
    0x0000f4e6 eor.w r8, r8, r2                                  |         r8 ^= r2;
    0x0000f4ea lsl.w r2, sl, 2                                   |         r2 = sl << 2;
    0x0000f4ee and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f4f2 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f4f4 add r2, r8                                        |         r2 += r8;
    0x0000f4f6 eor.w r2, r2, ip                                  |         r2 ^= ip;
    0x0000f4fa eor.w ip, r2, r0                                  |         
    0x0000f4fe lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000f500 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f504 ldr.w fp, [r7, r0]                                |         fp = *((r7 + r0));
    0x0000f508 lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000f50a and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f50e ldr.w r8, [r4, r0]                                |         r8 = *((r4 + r0));
    0x0000f512 lsrs r0, r2, 6                                    |         r0 = r2 >> 6;
    0x0000f514 lsls r2, r2, 2                                    |         r2 <<= 2;
    0x0000f516 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f51a ldr.w r0, [lr, r0]                                |         r0 = *((lr + r0));
    0x0000f51e add r8, fp                                        |         r8 += fp;
    0x0000f520 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f524 eor.w r0, r0, r8                                  |         r0 ^= r8;
    0x0000f528 ldr.w r8, [r3, r2]                                |         r8 = *((r3 + r2));
    0x0000f52c str ip, [r1], 8                                   |         *(r1) = ip;
                                                                 |         r1 += 8;
    0x0000f530 cmp r1, sb                                        |         
    0x0000f532 add r8, r0                                        |         r8 += r0;
    0x0000f534 eor.w r8, r8, sl                                  |         r8 ^= sl;
    0x0000f538 eor.w r2, r8, r6                                  |         r2 = r8 ^ r6;
    0x0000f53c str r2, [r1, -0x4]                                |         *((r1 - 0x4)) = r2;
    0x0000f540 bne.w 0xf124                                      |         
                                                                 |     }
    0x0000f544 mov r6, ip                                        |     r6 = ip;
    0x0000f546 mov r8, r2                                        |     r8 = r2;
    0x0000f548 mov ip, r4                                        |     
    0x0000f54a mov r2, r6                                        |     r2 = r6;
    0x0000f54c mov r6, r8                                        |     r6 = r8;
                                                                 |     do {
    0x0000f54e ldr r1, [r5]                                      |         r1 = *(r5);
    0x0000f550 eors r2, r1                                       |         r2 ^= r1;
    0x0000f552 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x0000f554 lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000f556 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f55a ldr.w r8, [r7, r0]                                |         r8 = *((r7 + r0));
    0x0000f55e lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000f560 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f564 ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000f566 add r0, r8                                        |         r0 += r8;
    0x0000f568 lsr.w r8, r2, 6                                   |         r8 = r2 >> 6;
    0x0000f56c and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000f570 ldr.w r8, [lr, r8]                                |         r8 = *((lr + r8));
    0x0000f574 eor.w r8, r8, r0                                  |         r8 ^= r0;
    0x0000f578 lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000f57a and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f57e ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000f580 add r0, r8                                        |         r0 += r8;
    0x0000f582 eors r0, r1                                       |         r0 ^= r1;
    0x0000f584 ldr r1, [r5, 8]                                   |         r1 = *((r5 + 8));
    0x0000f586 eors r0, r6                                       |         r0 ^= r6;
    0x0000f588 eors r2, r1                                       |         r2 ^= r1;
    0x0000f58a lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000f58c and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f590 ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000f592 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000f594 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f598 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000f59a add r1, r6                                        |         r1 += r6;
    0x0000f59c lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000f59e and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f5a2 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f5a6 eors r6, r1                                       |         r6 ^= r1;
    0x0000f5a8 lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000f5aa and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f5ae ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000f5b0 add r1, r6                                        |         r1 += r6;
    0x0000f5b2 eors r1, r2                                       |         r1 ^= r2;
    0x0000f5b4 ldr r2, [r5, 0xc]                                 |         r2 = *((r5 + 0xc));
    0x0000f5b6 eors r0, r2                                       |         r0 ^= r2;
    0x0000f5b8 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000f5ba and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f5be ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f5c0 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000f5c2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f5c6 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f5c8 add r2, r6                                        |         r2 += r6;
    0x0000f5ca lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000f5cc and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f5d0 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f5d4 eors r6, r2                                       |         r6 ^= r2;
    0x0000f5d6 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000f5d8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f5dc ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f5de add r2, r6                                        |         r2 += r6;
    0x0000f5e0 eors r0, r2                                       |         r0 ^= r2;
    0x0000f5e2 ldr r2, [r5, 0x10]                                |         r2 = *((r5 + 0x10));
    0x0000f5e4 eors r1, r2                                       |         r1 ^= r2;
    0x0000f5e6 lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000f5e8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f5ec ldr.w r8, [r7, r2]                                |         r8 = *((r7 + r2));
    0x0000f5f0 lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000f5f2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f5f6 ldr r6, [r4, r2]                                  |         r6 = *((r4 + r2));
    0x0000f5f8 lsrs r2, r0, 6                                    |         r2 = r0 >> 6;
    0x0000f5fa and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f5fe ldr.w r2, [lr, r2]                                |         r2 = *((lr + r2));
    0x0000f602 add r6, r8                                        |         r6 += r8;
    0x0000f604 eors r2, r6                                       |         r2 ^= r6;
    0x0000f606 lsls r6, r0, 2                                    |         r6 = r0 << 2;
    0x0000f608 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f60c ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000f60e add r6, r2                                        |         r6 += r2;
    0x0000f610 ldr r2, [r5, 0x14]                                |         r2 = *((r5 + 0x14));
    0x0000f612 eors r6, r1                                       |         r6 ^= r1;
    0x0000f614 eors r0, r2                                       |         r0 ^= r2;
    0x0000f616 lsrs r2, r6, 0xe                                  |         r2 = r6 >> 0xe;
    0x0000f618 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f61c ldr r1, [r7, r2]                                  |         r1 = *((r7 + r2));
    0x0000f61e lsrs r2, r6, 0x16                                 |         r2 = r6 >> 0x16;
    0x0000f620 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f624 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f626 add r2, r1                                        |         r2 += r1;
    0x0000f628 lsrs r1, r6, 6                                    |         r1 = r6 >> 6;
    0x0000f62a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f62e ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000f632 eors r1, r2                                       |         r1 ^= r2;
    0x0000f634 lsls r2, r6, 2                                    |         r2 = r6 << 2;
    0x0000f636 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f63a ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f63c add r2, r1                                        |         r2 += r1;
    0x0000f63e ldr r1, [r5, 0x18]                                |         r1 = *((r5 + 0x18));
    0x0000f640 eors r2, r0                                       |         r2 ^= r0;
    0x0000f642 eors r6, r1                                       |         r6 ^= r1;
    0x0000f644 lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000f646 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f64a ldr.w r8, [r7, r1]                                |         r8 = *((r7 + r1));
    0x0000f64e lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000f650 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f654 ldr r0, [r4, r1]                                  |         r0 = *((r4 + r1));
    0x0000f656 lsrs r1, r2, 6                                    |         r1 = r2 >> 6;
    0x0000f658 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f65c ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000f660 add r0, r8                                        |         r0 += r8;
    0x0000f662 eors r1, r0                                       |         r1 ^= r0;
    0x0000f664 lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000f666 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f66a ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000f66c add r0, r1                                        |         r0 += r1;
    0x0000f66e eors r0, r6                                       |         r0 ^= r6;
    0x0000f670 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000f672 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f676 ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000f678 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000f67a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f67e ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000f680 add r1, r6                                        |         r1 += r6;
    0x0000f682 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000f684 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f688 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f68c eors r6, r1                                       |         r6 ^= r1;
    0x0000f68e lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000f690 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f694 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000f696 add r6, r1                                        |         r6 += r1;
    0x0000f698 ldr r1, [r5, 0x1c]                                |         r1 = *((r5 + 0x1c));
    0x0000f69a eors r2, r1                                       |         r2 ^= r1;
    0x0000f69c eor.w r1, r6, r2                                  |         r1 = r6 ^ r2;
    0x0000f6a0 ldr r2, [r5, 0x20]                                |         r2 = *((r5 + 0x20));
    0x0000f6a2 eors r0, r2                                       |         r0 ^= r2;
    0x0000f6a4 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000f6a6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f6aa ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f6ac lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000f6ae and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f6b2 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f6b4 add r2, r6                                        |         r2 += r6;
    0x0000f6b6 lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000f6b8 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f6bc ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f6c0 eors r6, r2                                       |         r6 ^= r2;
    0x0000f6c2 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000f6c4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f6c8 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f6ca add r2, r6                                        |         r2 += r6;
    0x0000f6cc eors r0, r2                                       |         r0 ^= r2;
    0x0000f6ce ldr r2, [r5, 0x24]                                |         r2 = *((r5 + 0x24));
    0x0000f6d0 eors r1, r2                                       |         r1 ^= r2;
    0x0000f6d2 lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000f6d4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f6d8 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f6da lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000f6dc and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f6e0 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f6e2 add r2, r6                                        |         r2 += r6;
    0x0000f6e4 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000f6e6 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f6ea ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f6ee eors r6, r2                                       |         r6 ^= r2;
    0x0000f6f0 lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000f6f2 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f6f6 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f6f8 add r2, r6                                        |         r2 += r6;
    0x0000f6fa eors r1, r2                                       |         r1 ^= r2;
    0x0000f6fc ldr r2, [r5, 0x28]                                |         r2 = *((r5 + 0x28));
    0x0000f6fe eors r0, r2                                       |         r0 ^= r2;
    0x0000f700 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000f702 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f706 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f708 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000f70a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f70e ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f710 add r2, r6                                        |         r2 += r6;
    0x0000f712 lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000f714 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f718 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f71c eors r6, r2                                       |         r6 ^= r2;
    0x0000f71e lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000f720 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f724 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f726 add r2, r6                                        |         r2 += r6;
    0x0000f728 eors r0, r2                                       |         r0 ^= r2;
    0x0000f72a ldr r2, [r5, 0x2c]                                |         r2 = *((r5 + 0x2c));
    0x0000f72c eors r1, r2                                       |         r1 ^= r2;
    0x0000f72e lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000f730 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f734 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f736 lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000f738 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f73c ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f73e add r2, r6                                        |         r2 += r6;
    0x0000f740 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000f742 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f746 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f74a eors r6, r2                                       |         r6 ^= r2;
    0x0000f74c lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000f74e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f752 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f754 add r2, r6                                        |         r2 += r6;
    0x0000f756 eors r2, r1                                       |         r2 ^= r1;
    0x0000f758 ldr r1, [r5, 0x30]                                |         r1 = *((r5 + 0x30));
    0x0000f75a eors r0, r1                                       |         r0 ^= r1;
    0x0000f75c lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000f75e and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f762 ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000f764 lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000f766 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f76a ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000f76c add r1, r6                                        |         r1 += r6;
    0x0000f76e lsrs r6, r2, 6                                    |         r6 = r2 >> 6;
    0x0000f770 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f774 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f778 eors r6, r1                                       |         r6 ^= r1;
    0x0000f77a lsls r1, r2, 2                                    |         r1 = r2 << 2;
    0x0000f77c and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f780 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000f782 add r1, r6                                        |         r1 += r6;
    0x0000f784 eors r0, r1                                       |         r0 ^= r1;
    0x0000f786 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000f788 lsl.w r8, r0, 2                                   |         r8 = r0 << 2;
    0x0000f78c and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f790 and r8, r8, 0x3fc                                 |         r8 &= 0x3fc;
    0x0000f794 ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x0000f796 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000f798 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f79c ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000f79e add r1, r6                                        |         r1 += r6;
    0x0000f7a0 lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000f7a2 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f7a6 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f7aa eors r6, r1                                       |         r6 ^= r1;
    0x0000f7ac ldr r1, [r5, 0x34]                                |         r1 = *((r5 + 0x34));
    0x0000f7ae eors r2, r1                                       |         r2 ^= r1;
    0x0000f7b0 ldr.w r1, [r3, r8]                                |         r1 = *((r3 + r8));
    0x0000f7b4 add r1, r6                                        |         r1 += r6;
    0x0000f7b6 eors r1, r2                                       |         r1 ^= r2;
    0x0000f7b8 ldr r2, [r5, 0x38]                                |         r2 = *((r5 + 0x38));
    0x0000f7ba eors r0, r2                                       |         r0 ^= r2;
    0x0000f7bc lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000f7be and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f7c2 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f7c4 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000f7c6 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f7ca ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f7cc add r2, r6                                        |         r2 += r6;
    0x0000f7ce lsrs r6, r1, 6                                    |         r6 = r1 >> 6;
    0x0000f7d0 and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f7d4 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f7d8 eors r6, r2                                       |         r6 ^= r2;
    0x0000f7da lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000f7dc and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f7e0 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f7e2 add r2, r6                                        |         r2 += r6;
    0x0000f7e4 eors r0, r2                                       |         r0 ^= r2;
    0x0000f7e6 ldr r2, [r5, 0x3c]                                |         r2 = *((r5 + 0x3c));
    0x0000f7e8 eors r1, r2                                       |         r1 ^= r2;
    0x0000f7ea lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000f7ec and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f7f0 ldr r6, [r7, r2]                                  |         r6 = *((r7 + r2));
    0x0000f7f2 lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000f7f4 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f7f8 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f7fa add r2, r6                                        |         r2 += r6;
    0x0000f7fc lsrs r6, r0, 6                                    |         r6 = r0 >> 6;
    0x0000f7fe and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f802 ldr.w r6, [lr, r6]                                |         r6 = *((lr + r6));
    0x0000f806 eors r6, r2                                       |         r6 ^= r2;
    0x0000f808 lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000f80a and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f80e ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f810 add r2, r6                                        |         r2 += r6;
    0x0000f812 eors r2, r1                                       |         r2 ^= r1;
    0x0000f814 ldr r1, [r5, 0x40]                                |         r1 = *((r5 + 0x40));
    0x0000f816 eors r0, r1                                       |         r0 ^= r1;
    0x0000f818 lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000f81a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f81e ldr.w r8, [r7, r1]                                |         r8 = *((r7 + r1));
    0x0000f822 lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000f824 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f828 ldr r6, [r4, r1]                                  |         r6 = *((r4 + r1));
    0x0000f82a lsrs r1, r2, 6                                    |         r1 = r2 >> 6;
    0x0000f82c and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f830 ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000f834 add r6, r8                                        |         r6 += r8;
    0x0000f836 eors r1, r6                                       |         r1 ^= r6;
    0x0000f838 lsls r6, r2, 2                                    |         r6 = r2 << 2;
    0x0000f83a and r6, r6, 0x3fc                                 |         r6 &= 0x3fc;
    0x0000f83e ldr r6, [r3, r6]                                  |         r6 = *((r3 + r6));
    0x0000f840 add r6, r1                                        |         r6 += r1;
    0x0000f842 ldr r1, [r5, 0x44]                                |         r1 = *((r5 + 0x44));
    0x0000f844 eors r6, r0                                       |         r6 ^= r0;
    0x0000f846 eors r2, r1                                       |         r2 ^= r1;
    0x0000f848 str r2, [ip], 8                                   |         *(ip) = r2;
                                                                 |         ip += 8;
    0x0000f84c cmp ip, r5                                        |         
    0x0000f84e str r6, [ip, -0x4]                                |         *((ip - 0x4)) = r6;
    0x0000f852 bne.w 0xf54e                                      |         
                                                                 |     } while (ip != r5);
    0x0000f856 ldr r2, [sp, 0xc]                                 |     r2 = var_ch_2;
    0x0000f858 cmp r2, 1                                         |     
                                                                 |     if (r2 == 1) {
    0x0000f85a beq 0xf8b0                                        |         goto label_7;
                                                                 |     }
    0x0000f85c ldrd r6, r0, [r5, 0x90]                           |     __asm ("ldrd r6, r0, [r5, 0x90]");
    0x0000f860 mov r2, r5                                        |     r2 = r5;
    0x0000f862 ldrd r8, ip, [r5, 0x98]                           |     __asm ("ldrd r8, ip, [r5, 0x98]");
    0x0000f866 ldr.w sl, [sp, 0x18]                              |     sl = var_18h;
                                                                 |     do {
    0x0000f86a ldr r1, [r2]                                      |         r1 = *(r2);
    0x0000f86c adds r2, 0x10                                     |         r2 += 0x10;
    0x0000f86e eors r1, r6                                       |         r1 ^= r6;
    0x0000f870 str r1, [r2, -0x10]                               |         *((r2 - 0x10)) = r1;
    0x0000f874 ldr r1, [r2, -0xc]                                |         r1 = *((r2 - 0xc));
    0x0000f878 eors r1, r0                                       |         r1 ^= r0;
    0x0000f87a str r1, [r2, -0xc]                                |         *((r2 - 0xc)) = r1;
    0x0000f87e ldr r1, [r2, -0x8]                                |         r1 = *((r2 - 0x8));
    0x0000f882 eor.w r1, r1, r8                                  |         r1 ^= r8;
    0x0000f886 str r1, [r2, -0x8]                                |         *((r2 - 0x8)) = r1;
    0x0000f88a ldr r1, [r2, -0x4]                                |         r1 = *((r2 - 0x4));
    0x0000f88e eor.w r1, r1, ip                                  |         r1 ^= ip;
    0x0000f892 str r1, [r2, -0x4]                                |         *((r2 - 0x4)) = r1;
    0x0000f896 cmp sl, r2                                        |         
    0x0000f898 bne 0xf86a                                        |         
                                                                 |     } while (sl != r2);
    0x0000f89a ldr r2, [r5, 0x40]                                |     r2 = *((r5 + 0x40));
    0x0000f89c eor.w ip, r6, r2                                  |     
    0x0000f8a0 ldr r2, [r5, 0x44]                                |     r2 = *((r5 + 0x44));
    0x0000f8a2 str.w ip, [r5, 0x40]                              |     __asm ("str.w ip, [r5, 0x40]");
    0x0000f8a6 eors r0, r2                                       |     r0 ^= r2;
    0x0000f8a8 movs r2, 1                                        |     r2 = 1;
    0x0000f8aa str r0, [r5, 0x44]                                |     *((r5 + 0x44)) = r0;
    0x0000f8ac str r2, [sp, 0xc]                                 |     var_ch_2 = r2;
    0x0000f8ae b 0xf0fe                                          |     goto label_2;
                                                                 | label_7:
    0x0000f8b0 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0000f8b2 subs r2, 1                                        |     r2--;
    0x0000f8b4 str r2, [sp, 0x10]                                |     var_10h = r2;
                                                                 |     if (r2 != 1) {
    0x0000f8b6 bne.w 0xf0d6                                      |         goto label_3;
                                                                 |     }
    0x0000f8ba mov r6, ip                                        |     r6 = ip;
    0x0000f8bc ldr.w r2, [pc, 0x428]                             |     
    0x0000f8c0 ldr r1, [r6, 0x10]                                |     r1 = *((r6 + 0x10));
    0x0000f8c2 ldrd sb, r8, [ip]                                 |     __asm ("ldrd sb, r8, [ip]");
    0x0000f8c6 add r2, pc                                        |     r2 = 0x1f5b2;
    0x0000f8c8 ldrd ip, fp, [ip, 8]                              |     __asm ("ldrd ip, fp, [ip, 8]");
    0x0000f8cc str r1, [sp, 0xc]                                 |     var_ch_2 = r1;
    0x0000f8ce ldr r1, [r6, 0x14]                                |     r1 = *((r6 + 0x14));
    0x0000f8d0 str r1, [sp, 0x10]                                |     var_10h = r1;
    0x0000f8d2 ldr r1, [r6, 0x18]                                |     r1 = *((r6 + 0x18));
    0x0000f8d4 str r1, [sp, 0x14]                                |     var_14h = r1;
    0x0000f8d6 ldr r1, [r6, 0x1c]                                |     r1 = *((r6 + 0x1c));
    0x0000f8d8 str r1, [sp, 0x18]                                |     var_18h = r1;
    0x0000f8da ldr r1, [r6, 0x20]                                |     r1 = *((r6 + 0x20));
    0x0000f8dc str r1, [sp, 0x1c]                                |     var_1ch_2 = r1;
    0x0000f8de ldr r1, [r6, 0x24]                                |     r1 = *((r6 + 0x24));
    0x0000f8e0 str r1, [sp, 0x20]                                |     var_20h_2 = r1;
    0x0000f8e2 ldr r1, [r6, 0x28]                                |     r1 = *((r6 + 0x28));
    0x0000f8e4 str r1, [sp, 0x24]                                |     var_24h = r1;
    0x0000f8e6 ldr r1, [r6, 0x2c]                                |     r1 = *((r6 + 0x2c));
    0x0000f8e8 str r1, [sp, 0x28]                                |     var_28h = r1;
    0x0000f8ea ldr r1, [r6, 0x30]                                |     r1 = *((r6 + 0x30));
    0x0000f8ec str r1, [sp, 0x2c]                                |     var_2ch = r1;
    0x0000f8ee ldr r1, [r6, 0x34]                                |     r1 = *((r6 + 0x34));
    0x0000f8f0 str r1, [sp, 0x30]                                |     var_30h = r1;
    0x0000f8f2 ldr r1, [r6, 0x38]                                |     r1 = *((r6 + 0x38));
    0x0000f8f4 str r1, [sp, 0x34]                                |     var_34h = r1;
    0x0000f8f6 ldr r1, [r6, 0x3c]                                |     r1 = *((r6 + 0x3c));
    0x0000f8f8 str r1, [sp, 0x38]                                |     var_38h = r1;
    0x0000f8fa ldr r1, [r6, 0x40]                                |     r1 = *((r6 + 0x40));
    0x0000f8fc ldr r6, [r6, 0x44]                                |     r6 = *((r6 + 0x44));
    0x0000f8fe str r1, [sp, 0x3c]                                |     var_3ch = r1;
    0x0000f900 add.w r1, r4, 0x1080                              |     r1 = r4 + 0x1080;
    0x0000f904 adds r1, 0x14                                     |     r1 += 0x14;
    0x0000f906 str r1, [sp, 0x44]                                |     var_44h = r1;
    0x0000f908 add.w r1, r2, 0xc0                                |     r1 = r2 + 0xc0;
    0x0000f90c adds r2, 0xd8                                     |     r2 += 0xd8;
    0x0000f90e str r1, [sp, 0x40]                                |     var_40h = r1;
    0x0000f910 str r2, [sp, 0x4c]                                |     var_4ch = r2;
                                                                 | label_4:
    0x0000f912 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x0000f914 movs r5, 0x40                                     |     r5 = 0x40;
    0x0000f916 str r5, [sp, 8]                                   |     var_8h_2 = r5;
    0x0000f918 ldrd r0, r1, [r2]                                 |     __asm ("ldrd r0, r1, [r2]");
    0x0000f91c mov r2, r0                                        |     r2 = r0;
                                                                 |     do {
    0x0000f91e eor.w r0, sb, r2                                  |         r0 = sb ^ r2;
    0x0000f922 ldr r5, [sp, 0xc]                                 |         r5 = var_ch_2;
    0x0000f924 lsrs r2, r0, 0xe                                  |         r2 = r0 >> 0xe;
    0x0000f926 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f92a ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000f92e lsrs r2, r0, 0x16                                 |         r2 = r0 >> 0x16;
    0x0000f930 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f934 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000f936 add r2, sl                                        |         r2 += sl;
    0x0000f938 lsr.w sl, r0, 6                                   |         sl = r0 >> 6;
    0x0000f93c and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f940 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000f944 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000f948 lsls r2, r0, 2                                    |         r2 = r0 << 2;
    0x0000f94a eor.w r0, ip, r0                                  |         r0 = ip ^ r0;
    0x0000f94e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000f952 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000f954 add r2, sl                                        |         r2 += sl;
    0x0000f956 eor.w r2, r2, r8                                  |         r2 ^= r8;
    0x0000f95a eors r2, r1                                       |         r2 ^= r1;
    0x0000f95c lsrs r1, r2, 0xe                                  |         r1 = r2 >> 0xe;
    0x0000f95e and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f962 ldr.w sl, [r7, r1]                                |         sl = *((r7 + r1));
    0x0000f966 lsrs r1, r2, 0x16                                 |         r1 = r2 >> 0x16;
    0x0000f968 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f96c ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000f96e add sl, r1                                        |         sl += r1;
    0x0000f970 lsrs r1, r2, 6                                    |         r1 = r2 >> 6;
    0x0000f972 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000f976 ldr.w r1, [lr, r1]                                |         r1 = *((lr + r1));
    0x0000f97a eor.w r1, r1, sl                                  |         r1 ^= sl;
    0x0000f97e lsl.w sl, r2, 2                                   |         sl = r2 << 2;
    0x0000f982 eor.w r2, fp, r2                                  |         r2 = fp ^ r2;
    0x0000f986 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f98a ldr.w sl, [r3, sl]                                |         sl = *((r3 + sl));
    0x0000f98e add r1, sl                                        |         r1 += sl;
    0x0000f990 eors r1, r0                                       |         r1 ^= r0;
    0x0000f992 lsrs r0, r1, 0xe                                  |         r0 = r1 >> 0xe;
    0x0000f994 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f998 ldr.w sl, [r7, r0]                                |         sl = *((r7 + r0));
    0x0000f99c lsrs r0, r1, 0x16                                 |         r0 = r1 >> 0x16;
    0x0000f99e and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f9a2 ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000f9a4 add sl, r0                                        |         sl += r0;
    0x0000f9a6 lsrs r0, r1, 6                                    |         r0 = r1 >> 6;
    0x0000f9a8 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f9ac ldr.w r0, [lr, r0]                                |         r0 = *((lr + r0));
    0x0000f9b0 eor.w r0, r0, sl                                  |         r0 ^= sl;
    0x0000f9b4 lsl.w sl, r1, 2                                   |         sl = r1 << 2;
    0x0000f9b8 eors r1, r5                                       |         r1 ^= r5;
    0x0000f9ba ldr r5, [sp, 0x10]                                |         r5 = var_10h;
    0x0000f9bc and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f9c0 ldr.w sl, [r3, sl]                                |         sl = *((r3 + sl));
    0x0000f9c4 add sl, r0                                        |         sl += r0;
    0x0000f9c6 eor.w r2, sl, r2                                  |         r2 = sl ^ r2;
    0x0000f9ca lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000f9cc and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f9d0 ldr.w sl, [r7, r0]                                |         sl = *((r7 + r0));
    0x0000f9d4 lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000f9d6 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f9da ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000f9dc add r0, sl                                        |         r0 += sl;
    0x0000f9de lsr.w sl, r2, 6                                   |         sl = r2 >> 6;
    0x0000f9e2 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000f9e6 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000f9ea eor.w sl, sl, r0                                  |         sl ^= r0;
    0x0000f9ee lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000f9f0 eors r2, r5                                       |         r2 ^= r5;
    0x0000f9f2 ldr r5, [sp, 0x14]                                |         r5 = var_14h;
    0x0000f9f4 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000f9f8 ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000f9fa add r0, sl                                        |         r0 += sl;
    0x0000f9fc eors r0, r1                                       |         r0 ^= r1;
    0x0000f9fe lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000fa00 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fa04 ldr.w sl, [r7, r1]                                |         sl = *((r7 + r1));
    0x0000fa08 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000fa0a and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fa0e ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000fa10 add r1, sl                                        |         r1 += sl;
    0x0000fa12 lsr.w sl, r0, 6                                   |         sl = r0 >> 6;
    0x0000fa16 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fa1a ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fa1e eor.w sl, sl, r1                                  |         sl ^= r1;
    0x0000fa22 lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000fa24 eors r0, r5                                       |         r0 ^= r5;
    0x0000fa26 ldr r5, [sp, 0x18]                                |         r5 = var_18h;
    0x0000fa28 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fa2c ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000fa2e add r1, sl                                        |         r1 += sl;
    0x0000fa30 eors r1, r2                                       |         r1 ^= r2;
    0x0000fa32 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000fa34 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fa38 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000fa3c lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000fa3e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fa42 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000fa44 add r2, sl                                        |         r2 += sl;
    0x0000fa46 lsr.w sl, r1, 6                                   |         sl = r1 >> 6;
    0x0000fa4a and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fa4e ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fa52 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000fa56 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000fa58 eors r1, r5                                       |         r1 ^= r5;
    0x0000fa5a ldr r5, [sp, 0x1c]                                |         r5 = var_1ch_2;
    0x0000fa5c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fa60 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000fa62 add r2, sl                                        |         r2 += sl;
    0x0000fa64 eors r2, r0                                       |         r2 ^= r0;
    0x0000fa66 lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000fa68 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fa6c ldr.w sl, [r7, r0]                                |         sl = *((r7 + r0));
    0x0000fa70 lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000fa72 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fa76 ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000fa78 add r0, sl                                        |         r0 += sl;
    0x0000fa7a lsr.w sl, r2, 6                                   |         sl = r2 >> 6;
    0x0000fa7e and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fa82 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fa86 eor.w sl, sl, r0                                  |         sl ^= r0;
    0x0000fa8a lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000fa8c eors r2, r5                                       |         r2 ^= r5;
    0x0000fa8e and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fa92 ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000fa94 ldr r5, [sp, 0x20]                                |         r5 = var_20h_2;
    0x0000fa96 add r0, sl                                        |         r0 += sl;
    0x0000fa98 eors r0, r1                                       |         r0 ^= r1;
    0x0000fa9a lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000fa9c and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000faa0 ldr.w sl, [r7, r1]                                |         sl = *((r7 + r1));
    0x0000faa4 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000faa6 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000faaa ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000faac add r1, sl                                        |         r1 += sl;
    0x0000faae lsr.w sl, r0, 6                                   |         sl = r0 >> 6;
    0x0000fab2 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fab6 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000faba eor.w sl, sl, r1                                  |         sl ^= r1;
    0x0000fabe lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000fac0 eors r0, r5                                       |         r0 ^= r5;
    0x0000fac2 ldr r5, [sp, 0x24]                                |         r5 = var_24h;
    0x0000fac4 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fac8 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000faca add r1, sl                                        |         r1 += sl;
    0x0000facc eors r1, r2                                       |         r1 ^= r2;
    0x0000face lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000fad0 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fad4 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000fad8 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000fada and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fade ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000fae0 add r2, sl                                        |         r2 += sl;
    0x0000fae2 lsr.w sl, r1, 6                                   |         sl = r1 >> 6;
    0x0000fae6 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000faea ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000faee eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000faf2 lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000faf4 eors r1, r5                                       |         r1 ^= r5;
    0x0000faf6 ldr r5, [sp, 0x28]                                |         r5 = var_28h;
    0x0000faf8 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fafc ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000fafe add r2, sl                                        |         r2 += sl;
    0x0000fb00 eors r2, r0                                       |         r2 ^= r0;
    0x0000fb02 lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000fb04 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fb08 ldr.w sl, [r7, r0]                                |         sl = *((r7 + r0));
    0x0000fb0c lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000fb0e and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fb12 ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000fb14 add r0, sl                                        |         r0 += sl;
    0x0000fb16 lsr.w sl, r2, 6                                   |         sl = r2 >> 6;
    0x0000fb1a and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fb1e ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fb22 eor.w sl, sl, r0                                  |         sl ^= r0;
    0x0000fb26 lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000fb28 eors r2, r5                                       |         r2 ^= r5;
    0x0000fb2a ldr r5, [sp, 0x2c]                                |         r5 = var_2ch;
    0x0000fb2c and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fb30 ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000fb32 add r0, sl                                        |         r0 += sl;
    0x0000fb34 eors r0, r1                                       |         r0 ^= r1;
    0x0000fb36 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000fb38 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fb3c ldr.w sl, [r7, r1]                                |         sl = *((r7 + r1));
    0x0000fb40 lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000fb42 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fb46 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000fb48 add r1, sl                                        |         r1 += sl;
    0x0000fb4a lsr.w sl, r0, 6                                   |         sl = r0 >> 6;
    0x0000fb4e and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fb52 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fb56 eor.w sl, sl, r1                                  |         sl ^= r1;
    0x0000fb5a lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000fb5c eors r0, r5                                       |         r0 ^= r5;
    0x0000fb5e ldr r5, [sp, 0x30]                                |         r5 = var_30h;
    0x0000fb60 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fb64 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000fb66 add r1, sl                                        |         r1 += sl;
    0x0000fb68 eors r1, r2                                       |         r1 ^= r2;
    0x0000fb6a lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000fb6c and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fb70 ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000fb74 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000fb76 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fb7a ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000fb7c add r2, sl                                        |         r2 += sl;
    0x0000fb7e lsr.w sl, r1, 6                                   |         sl = r1 >> 6;
    0x0000fb82 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fb86 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fb8a eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000fb8e lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000fb90 eors r1, r5                                       |         r1 ^= r5;
    0x0000fb92 ldr r5, [sp, 0x34]                                |         r5 = var_34h;
    0x0000fb94 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fb98 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000fb9a add r2, sl                                        |         r2 += sl;
    0x0000fb9c eors r2, r0                                       |         r2 ^= r0;
    0x0000fb9e lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000fba0 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fba4 ldr.w sl, [r7, r0]                                |         sl = *((r7 + r0));
    0x0000fba8 lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000fbaa and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fbae ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000fbb0 add r0, sl                                        |         r0 += sl;
    0x0000fbb2 lsr.w sl, r2, 6                                   |         sl = r2 >> 6;
    0x0000fbb6 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fbba ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fbbe eor.w sl, sl, r0                                  |         sl ^= r0;
    0x0000fbc2 lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000fbc4 eors r2, r5                                       |         r2 ^= r5;
    0x0000fbc6 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fbca ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000fbcc add r0, sl                                        |         r0 += sl;
    0x0000fbce eors r0, r1                                       |         r0 ^= r1;
    0x0000fbd0 lsrs r1, r0, 0xe                                  |         r1 = r0 >> 0xe;
    0x0000fbd2 and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fbd6 ldr.w sl, [r7, r1]                                |         sl = *((r7 + r1));
    0x0000fbda lsrs r1, r0, 0x16                                 |         r1 = r0 >> 0x16;
    0x0000fbdc and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fbe0 ldr r1, [r4, r1]                                  |         r1 = *((r4 + r1));
    0x0000fbe2 ldr r5, [sp, 0x38]                                |         r5 = var_38h;
    0x0000fbe4 add r1, sl                                        |         r1 += sl;
    0x0000fbe6 lsr.w sl, r0, 6                                   |         sl = r0 >> 6;
    0x0000fbea and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fbee ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fbf2 eor.w sl, sl, r1                                  |         sl ^= r1;
    0x0000fbf6 lsls r1, r0, 2                                    |         r1 = r0 << 2;
    0x0000fbf8 eors r0, r5                                       |         r0 ^= r5;
    0x0000fbfa ldr r5, [sp, 0x3c]                                |         r5 = var_3ch;
    0x0000fbfc and r1, r1, 0x3fc                                 |         r1 &= 0x3fc;
    0x0000fc00 ldr r1, [r3, r1]                                  |         r1 = *((r3 + r1));
    0x0000fc02 add r1, sl                                        |         r1 += sl;
    0x0000fc04 eors r1, r2                                       |         r1 ^= r2;
    0x0000fc06 lsrs r2, r1, 0xe                                  |         r2 = r1 >> 0xe;
    0x0000fc08 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fc0c ldr.w sl, [r7, r2]                                |         sl = *((r7 + r2));
    0x0000fc10 lsrs r2, r1, 0x16                                 |         r2 = r1 >> 0x16;
    0x0000fc12 and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fc16 ldr r2, [r4, r2]                                  |         r2 = *((r4 + r2));
    0x0000fc18 add r2, sl                                        |         r2 += sl;
    0x0000fc1a lsr.w sl, r1, 6                                   |         sl = r1 >> 6;
    0x0000fc1e and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fc22 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fc26 eor.w sl, sl, r2                                  |         sl ^= r2;
    0x0000fc2a lsls r2, r1, 2                                    |         r2 = r1 << 2;
    0x0000fc2c eors r1, r5                                       |         r1 ^= r5;
    0x0000fc2e and r2, r2, 0x3fc                                 |         r2 &= 0x3fc;
    0x0000fc32 ldr r2, [r3, r2]                                  |         r2 = *((r3 + r2));
    0x0000fc34 add r2, sl                                        |         r2 += sl;
    0x0000fc36 eors r2, r0                                       |         r2 ^= r0;
    0x0000fc38 lsrs r0, r2, 0xe                                  |         r0 = r2 >> 0xe;
    0x0000fc3a and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fc3e ldr.w sl, [r7, r0]                                |         sl = *((r7 + r0));
    0x0000fc42 lsrs r0, r2, 0x16                                 |         r0 = r2 >> 0x16;
    0x0000fc44 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fc48 ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x0000fc4a add r0, sl                                        |         r0 += sl;
    0x0000fc4c lsr.w sl, r2, 6                                   |         sl = r2 >> 6;
    0x0000fc50 and sl, sl, 0x3fc                                 |         sl &= 0x3fc;
    0x0000fc54 ldr.w sl, [lr, sl]                                |         sl = *((lr + sl));
    0x0000fc58 eor.w sl, sl, r0                                  |         sl ^= r0;
    0x0000fc5c lsls r0, r2, 2                                    |         r0 = r2 << 2;
    0x0000fc5e eors r2, r6                                       |         r2 ^= r6;
    0x0000fc60 and r0, r0, 0x3fc                                 |         r0 &= 0x3fc;
    0x0000fc64 ldr r0, [r3, r0]                                  |         r0 = *((r3 + r0));
    0x0000fc66 add r0, sl                                        |         r0 += sl;
    0x0000fc68 eors r1, r0                                       |         r1 ^= r0;
    0x0000fc6a ldr r0, [sp, 8]                                   |         r0 = var_8h_2;
    0x0000fc6c subs r0, 1                                        |         r0--;
    0x0000fc6e str r0, [sp, 8]                                   |         var_8h_2 = r0;
    0x0000fc70 bne.w 0xf91e                                      |         
                                                                 |     } while (r0 != 1);
    0x0000fc74 mov r0, r2                                        |     r0 = r2;
    0x0000fc76 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x0000fc78 ldr r5, [sp, 8]                                   |     r5 = var_8h_2;
    0x0000fc7a str r0, [r2, -0x4]                                |     *((r2 - 0x4)) = r0;
    0x0000fc7e str r1, [r2], 8                                   |     *(r2) = r1;
                                                                 |     r2 += 8;
    0x0000fc82 str r2, [sp, 0x44]                                |     var_44h = r2;
    0x0000fc84 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x0000fc86 ldr r1, [sp, 0x4c]                                |     r1 = var_4ch;
    0x0000fc88 adds r2, 8                                        |     r2 += 8;
    0x0000fc8a cmp r2, r1                                        |     
    0x0000fc8c str r2, [sp, 0x40]                                |     var_40h = r2;
                                                                 |     if (r2 != r1) {
    0x0000fc8e bne.w 0xf912                                      |         goto label_4;
                                                                 |     }
    0x0000fc92 ldr r6, [sp]                                      |     r6 = *(sp);
    0x0000fc94 ldr r4, [sp, 4]                                   |     r4 = var_4h_2;
    0x0000fc96 ldr r1, [r6]                                      |     r1 = *(r6);
    0x0000fc98 ldr r2, [r6, 4]                                   |     r2 = *((r6 + 4));
    0x0000fc9a ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x0000fc9c ldr r0, [r6, 0xc]                                 |     r0 = *((r6 + 0xc));
    0x0000fc9e str r1, [r4]                                      |     *(r4) = r1;
    0x0000fca0 str r2, [r4, 4]                                   |     *((r4 + 4)) = r2;
    0x0000fca2 str r0, [r4, 0xc]                                 |     *((r4 + 0xc)) = r0;
    0x0000fca4 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x0000fca6 ldr r3, [r6, 0x18]                                |     r3 = *((r6 + 0x18));
    0x0000fca8 ldr r1, [r6, 0x10]                                |     r1 = *((r6 + 0x10));
    0x0000fcaa ldr r2, [r6, 0x14]                                |     r2 = *((r6 + 0x14));
    0x0000fcac str r3, [r4, 0x18]                                |     *((r4 + 0x18)) = r3;
    0x0000fcae ldr r3, [pc, 0x3c]                                |     
    0x0000fcb0 str r1, [r4, 0x10]                                |     *((r4 + 0x10)) = r1;
    0x0000fcb2 movs r1, 6                                        |     r1 = 6;
    0x0000fcb4 str r2, [r4, 0x14]                                |     *((r4 + 0x14)) = r2;
    0x0000fcb6 ldrb r2, [r6, 0x1c]                               |     r2 = *((r6 + 0x1c));
    0x0000fcb8 add r3, pc                                        |     r3 = 0x1f9aa;
    0x0000fcba ldr r6, [sp, 0x48]                                |     r6 = var_48h;
    0x0000fcbc add r2, r3                                        |     r2 += r3;
    0x0000fcbe ldrb.w r2, [r2, 0x40]                             |     r2 = *((r2 + 0x40));
    0x0000fcc2 mov r0, r6                                        |     r0 = r6;
    0x0000fcc4 and r2, r2, 0x30                                  |     r2 &= 0x30;
    0x0000fcc8 ldrb r3, [r3, r2]                                 |     r3 = *((r3 + r2));
    0x0000fcca movs r2, 0x17                                     |     r2 = 0x17;
    0x0000fccc strb r3, [r4, 0x1c]                               |     *((r4 + 0x1c)) = r3;
    0x0000fcce bl 0xe364                                         |     fcn_0000e364 (r0, r1);
    0x0000fcd2 mov r0, r4                                        |     r0 = r4;
    0x0000fcd4 mov r1, r6                                        |     r1 = r6;
    0x0000fcd6 adds r0, 0x1d                                     |     r0 += 0x1d;
    0x0000fcd8 movs r6, 1                                        |     r6 = 1;
    0x0000fcda bl 0xe2e4                                         |     fcn_0000e2e4 (r0, r1);
    0x0000fcde strb.w r5, [r4, 0x3c]                             |     *((r4 + 0x3c)) = r5;
    0x0000fce2 b.w 0xe498                                        |     goto label_1;
                                                                 | }

[*] Function strcpy used 1 times libcrypt.so.2.0.0