#include <wolfssl/wolfcrypt/libwolfssl_sources_asm.h>
#include <wolfssl/wolfcrypt/error-crypt.h>
#ifdef WOLFSSL_ARMASM
#ifdef WOLFSSL_ARMASM_THUMB2
#ifdef WOLFSSL_ARMASM_INLINE
#ifdef __IAR_SYSTEMS_ICC__
#define __asm__ asm
#define __volatile__ volatile
#define WOLFSSL_NO_VAR_ASSIGN_REG
#endif
#ifdef __KEIL__
#define __asm__ __asm
#define __volatile__ volatile
#endif
#ifndef NO_SHA256
#include <wolfssl/wolfcrypt/sha256.h>
#ifdef WOLFSSL_ARMASM_NO_NEON
XALIGNED(16) static const word32 L_SHA256_transform_len_k[] = {
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
};
void Transform_Sha256_Len_base(wc_Sha256* sha256, const byte* data, word32 len);
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256_p,
const byte* data_p, word32 len_p)
#else
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
const byte* data, word32 len)
#endif
{
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
register wc_Sha256* sha256 __asm__ ("r0") = (wc_Sha256*)sha256_p;
register const byte* data __asm__ ("r1") = (const byte*)data_p;
register word32 len __asm__ ("r2") = (word32)len_p;
register word32* L_SHA256_transform_len_k_c __asm__ ("r3") =
(word32*)&L_SHA256_transform_len_k;
#else
register word32* L_SHA256_transform_len_k_c =
(word32*)&L_SHA256_transform_len_k;
#endif
__asm__ __volatile__ (
"SUB sp, sp, #0xc0\n\t"
"MOV r12, %[L_SHA256_transform_len_k]\n\t"
"LDRD r4, r5, [%[sha256]]\n\t"
"LDRD r6, r7, [%[sha256], #8]\n\t"
"LDRD r8, r9, [%[sha256], #16]\n\t"
"LDRD r10, r11, [%[sha256], #24]\n\t"
"STRD r4, r5, [sp, #64]\n\t"
"STRD r6, r7, [sp, #72]\n\t"
"STRD r8, r9, [sp, #80]\n\t"
"STRD r10, r11, [sp, #88]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_begin:\n\t"
#else
"L_SHA256_transform_len_begin_%=:\n\t"
#endif
"LDR r4, [%[data]]\n\t"
"LDR r5, [%[data], #4]\n\t"
"LDR r6, [%[data], #8]\n\t"
"LDR r7, [%[data], #12]\n\t"
"LDR r8, [%[data], #16]\n\t"
"LDR r9, [%[data], #20]\n\t"
"LDR r10, [%[data], #24]\n\t"
"LDR r11, [%[data], #28]\n\t"
"REV r4, r4\n\t"
"REV r5, r5\n\t"
"REV r6, r6\n\t"
"REV r7, r7\n\t"
"REV r8, r8\n\t"
"REV r9, r9\n\t"
"REV r10, r10\n\t"
"REV r11, r11\n\t"
"STRD r4, r5, [sp]\n\t"
"STRD r6, r7, [sp, #8]\n\t"
"STRD r8, r9, [sp, #16]\n\t"
"STRD r10, r11, [sp, #24]\n\t"
"LDR r4, [%[data], #32]\n\t"
"LDR r5, [%[data], #36]\n\t"
"LDR r6, [%[data], #40]\n\t"
"LDR r7, [%[data], #44]\n\t"
"LDR r8, [%[data], #48]\n\t"
"LDR r9, [%[data], #52]\n\t"
"LDR r10, [%[data], #56]\n\t"
"LDR r11, [%[data], #60]\n\t"
"REV r4, r4\n\t"
"REV r5, r5\n\t"
"REV r6, r6\n\t"
"REV r7, r7\n\t"
"REV r8, r8\n\t"
"REV r9, r9\n\t"
"REV r10, r10\n\t"
"REV r11, r11\n\t"
"STRD r4, r5, [sp, #32]\n\t"
"STRD r6, r7, [sp, #40]\n\t"
"STRD r8, r9, [sp, #48]\n\t"
"STRD r10, r11, [sp, #56]\n\t"
"LDR r11, [%[sha256], #4]\n\t"
"LDR r4, [%[sha256], #8]\n\t"
"EOR r11, r11, r4\n\t"
#ifndef WOLFSSL_ARMASM_SHA256_SMALL
"MOV r3, #0x3\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_start_fast:\n\t"
#else
"L_SHA256_transform_len_start_fast_%=:\n\t"
#endif
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r9, [%[sha256], #28]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp]\n\t"
"LDR r6, [r12]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r8, [%[sha256], #12]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #12]\n\t"
"STR r9, [%[sha256], #28]\n\t"
"LDR r6, [sp, #56]\n\t"
"LDR r7, [sp, #36]\n\t"
"LDR r8, [sp, #4]\n\t"
"LDR r9, [sp]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp]\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r9, [%[sha256], #24]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #4]\n\t"
"LDR r6, [r12, #4]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r8, [%[sha256], #8]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #8]\n\t"
"STR r9, [%[sha256], #24]\n\t"
"LDR r6, [sp, #60]\n\t"
"LDR r7, [sp, #40]\n\t"
"LDR r8, [sp, #8]\n\t"
"LDR r9, [sp, #4]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #4]\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r9, [%[sha256], #20]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #8]\n\t"
"LDR r6, [r12, #8]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r8, [%[sha256], #4]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #4]\n\t"
"STR r9, [%[sha256], #20]\n\t"
"LDR r6, [sp]\n\t"
"LDR r7, [sp, #44]\n\t"
"LDR r8, [sp, #12]\n\t"
"LDR r9, [sp, #8]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #8]\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r9, [%[sha256], #16]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #12]\n\t"
"LDR r6, [r12, #12]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r8, [%[sha256]]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256]]\n\t"
"STR r9, [%[sha256], #16]\n\t"
"LDR r6, [sp, #4]\n\t"
"LDR r7, [sp, #48]\n\t"
"LDR r8, [sp, #16]\n\t"
"LDR r9, [sp, #12]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #12]\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r9, [%[sha256], #12]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #16]\n\t"
"LDR r6, [r12, #16]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r8, [%[sha256], #28]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #28]\n\t"
"STR r9, [%[sha256], #12]\n\t"
"LDR r6, [sp, #8]\n\t"
"LDR r7, [sp, #52]\n\t"
"LDR r8, [sp, #20]\n\t"
"LDR r9, [sp, #16]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #16]\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r9, [%[sha256], #8]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #20]\n\t"
"LDR r6, [r12, #20]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r8, [%[sha256], #24]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #24]\n\t"
"STR r9, [%[sha256], #8]\n\t"
"LDR r6, [sp, #12]\n\t"
"LDR r7, [sp, #56]\n\t"
"LDR r8, [sp, #24]\n\t"
"LDR r9, [sp, #20]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #20]\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r9, [%[sha256], #4]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #24]\n\t"
"LDR r6, [r12, #24]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r8, [%[sha256], #20]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #20]\n\t"
"STR r9, [%[sha256], #4]\n\t"
"LDR r6, [sp, #16]\n\t"
"LDR r7, [sp, #60]\n\t"
"LDR r8, [sp, #28]\n\t"
"LDR r9, [sp, #24]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #24]\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r9, [%[sha256]]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #28]\n\t"
"LDR r6, [r12, #28]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r8, [%[sha256], #16]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #16]\n\t"
"STR r9, [%[sha256]]\n\t"
"LDR r6, [sp, #20]\n\t"
"LDR r7, [sp]\n\t"
"LDR r8, [sp, #32]\n\t"
"LDR r9, [sp, #28]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #28]\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r9, [%[sha256], #28]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #32]\n\t"
"LDR r6, [r12, #32]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r8, [%[sha256], #12]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #12]\n\t"
"STR r9, [%[sha256], #28]\n\t"
"LDR r6, [sp, #24]\n\t"
"LDR r7, [sp, #4]\n\t"
"LDR r8, [sp, #36]\n\t"
"LDR r9, [sp, #32]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #32]\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r9, [%[sha256], #24]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #36]\n\t"
"LDR r6, [r12, #36]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r8, [%[sha256], #8]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #8]\n\t"
"STR r9, [%[sha256], #24]\n\t"
"LDR r6, [sp, #28]\n\t"
"LDR r7, [sp, #8]\n\t"
"LDR r8, [sp, #40]\n\t"
"LDR r9, [sp, #36]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #36]\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r9, [%[sha256], #20]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #40]\n\t"
"LDR r6, [r12, #40]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r8, [%[sha256], #4]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #4]\n\t"
"STR r9, [%[sha256], #20]\n\t"
"LDR r6, [sp, #32]\n\t"
"LDR r7, [sp, #12]\n\t"
"LDR r8, [sp, #44]\n\t"
"LDR r9, [sp, #40]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #40]\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r9, [%[sha256], #16]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #44]\n\t"
"LDR r6, [r12, #44]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r8, [%[sha256]]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256]]\n\t"
"STR r9, [%[sha256], #16]\n\t"
"LDR r6, [sp, #36]\n\t"
"LDR r7, [sp, #16]\n\t"
"LDR r8, [sp, #48]\n\t"
"LDR r9, [sp, #44]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #44]\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r9, [%[sha256], #12]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #48]\n\t"
"LDR r6, [r12, #48]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r8, [%[sha256], #28]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #28]\n\t"
"STR r9, [%[sha256], #12]\n\t"
"LDR r6, [sp, #40]\n\t"
"LDR r7, [sp, #20]\n\t"
"LDR r8, [sp, #52]\n\t"
"LDR r9, [sp, #48]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #48]\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r9, [%[sha256], #8]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #52]\n\t"
"LDR r6, [r12, #52]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r8, [%[sha256], #24]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #24]\n\t"
"STR r9, [%[sha256], #8]\n\t"
"LDR r6, [sp, #44]\n\t"
"LDR r7, [sp, #24]\n\t"
"LDR r8, [sp, #56]\n\t"
"LDR r9, [sp, #52]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #52]\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r9, [%[sha256], #4]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #56]\n\t"
"LDR r6, [r12, #56]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r8, [%[sha256], #20]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #20]\n\t"
"STR r9, [%[sha256], #4]\n\t"
"LDR r6, [sp, #48]\n\t"
"LDR r7, [sp, #28]\n\t"
"LDR r8, [sp, #60]\n\t"
"LDR r9, [sp, #56]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #56]\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r9, [%[sha256]]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #60]\n\t"
"LDR r6, [r12, #60]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r8, [%[sha256], #16]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #16]\n\t"
"STR r9, [%[sha256]]\n\t"
"LDR r6, [sp, #52]\n\t"
"LDR r7, [sp, #32]\n\t"
"LDR r8, [sp]\n\t"
"LDR r9, [sp, #60]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #60]\n\t"
"ADD r12, r12, #0x40\n\t"
"SUBS r3, r3, #0x1\n\t"
#if defined(__GNUC__)
"BNE L_SHA256_transform_len_start_fast_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BNE.W L_SHA256_transform_len_start_fast\n\t"
#else
"BNE.W L_SHA256_transform_len_start_fast_%=\n\t"
#endif
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r9, [%[sha256], #28]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp]\n\t"
"LDR r6, [r12]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r8, [%[sha256], #12]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #12]\n\t"
"STR r9, [%[sha256], #28]\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r9, [%[sha256], #24]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #4]\n\t"
"LDR r6, [r12, #4]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r8, [%[sha256], #8]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #8]\n\t"
"STR r9, [%[sha256], #24]\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r9, [%[sha256], #20]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #8]\n\t"
"LDR r6, [r12, #8]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r8, [%[sha256], #4]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #4]\n\t"
"STR r9, [%[sha256], #20]\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r9, [%[sha256], #16]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #12]\n\t"
"LDR r6, [r12, #12]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r8, [%[sha256]]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256]]\n\t"
"STR r9, [%[sha256], #16]\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r9, [%[sha256], #12]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #16]\n\t"
"LDR r6, [r12, #16]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r8, [%[sha256], #28]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #28]\n\t"
"STR r9, [%[sha256], #12]\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r9, [%[sha256], #8]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #20]\n\t"
"LDR r6, [r12, #20]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r8, [%[sha256], #24]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #24]\n\t"
"STR r9, [%[sha256], #8]\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r9, [%[sha256], #4]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #24]\n\t"
"LDR r6, [r12, #24]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r8, [%[sha256], #20]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #20]\n\t"
"STR r9, [%[sha256], #4]\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r9, [%[sha256]]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #28]\n\t"
"LDR r6, [r12, #28]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r8, [%[sha256], #16]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #16]\n\t"
"STR r9, [%[sha256]]\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r9, [%[sha256], #28]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #32]\n\t"
"LDR r6, [r12, #32]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r8, [%[sha256], #12]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #12]\n\t"
"STR r9, [%[sha256], #28]\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r9, [%[sha256], #24]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #36]\n\t"
"LDR r6, [r12, #36]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r8, [%[sha256], #8]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #8]\n\t"
"STR r9, [%[sha256], #24]\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r9, [%[sha256], #20]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #40]\n\t"
"LDR r6, [r12, #40]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r8, [%[sha256], #4]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #4]\n\t"
"STR r9, [%[sha256], #20]\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r9, [%[sha256], #16]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #44]\n\t"
"LDR r6, [r12, #44]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r8, [%[sha256]]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256]]\n\t"
"STR r9, [%[sha256], #16]\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r9, [%[sha256], #12]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #48]\n\t"
"LDR r6, [r12, #48]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r8, [%[sha256], #28]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #28]\n\t"
"STR r9, [%[sha256], #12]\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r9, [%[sha256], #8]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #52]\n\t"
"LDR r6, [r12, #52]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r8, [%[sha256], #24]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #24]\n\t"
"STR r9, [%[sha256], #8]\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r9, [%[sha256], #4]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #56]\n\t"
"LDR r6, [r12, #56]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r8, [%[sha256], #20]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #20]\n\t"
"STR r9, [%[sha256], #4]\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r9, [%[sha256]]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #60]\n\t"
"LDR r6, [r12, #60]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r8, [%[sha256], #16]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #16]\n\t"
"STR r9, [%[sha256]]\n\t"
#else
"MOV r3, #0x4\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_start_small:\n\t"
#else
"L_SHA256_transform_len_start_small_%=:\n\t"
#endif
"SUB r3, r3, #0x1\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r9, [%[sha256], #28]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp]\n\t"
"LDR r6, [r12]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r8, [%[sha256], #12]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #12]\n\t"
"STR r9, [%[sha256], #28]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_0_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_0\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_0_%=\n\t"
#endif
"LDR r6, [sp, #56]\n\t"
"LDR r7, [sp, #36]\n\t"
"LDR r8, [sp, #4]\n\t"
"LDR r9, [sp]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_0:\n\t"
#else
"L_SHA256_transform_len_blk_end_0_%=:\n\t"
#endif
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r9, [%[sha256], #24]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #4]\n\t"
"LDR r6, [r12, #4]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r8, [%[sha256], #8]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #8]\n\t"
"STR r9, [%[sha256], #24]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_1_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_1\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_1_%=\n\t"
#endif
"LDR r6, [sp, #60]\n\t"
"LDR r7, [sp, #40]\n\t"
"LDR r8, [sp, #8]\n\t"
"LDR r9, [sp, #4]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #4]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_1:\n\t"
#else
"L_SHA256_transform_len_blk_end_1_%=:\n\t"
#endif
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r9, [%[sha256], #20]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #8]\n\t"
"LDR r6, [r12, #8]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r8, [%[sha256], #4]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #4]\n\t"
"STR r9, [%[sha256], #20]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_2_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_2\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_2_%=\n\t"
#endif
"LDR r6, [sp]\n\t"
"LDR r7, [sp, #44]\n\t"
"LDR r8, [sp, #12]\n\t"
"LDR r9, [sp, #8]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #8]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_2:\n\t"
#else
"L_SHA256_transform_len_blk_end_2_%=:\n\t"
#endif
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r9, [%[sha256], #16]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #12]\n\t"
"LDR r6, [r12, #12]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r8, [%[sha256]]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256]]\n\t"
"STR r9, [%[sha256], #16]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_3_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_3\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_3_%=\n\t"
#endif
"LDR r6, [sp, #4]\n\t"
"LDR r7, [sp, #48]\n\t"
"LDR r8, [sp, #16]\n\t"
"LDR r9, [sp, #12]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #12]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_3:\n\t"
#else
"L_SHA256_transform_len_blk_end_3_%=:\n\t"
#endif
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r9, [%[sha256], #12]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #16]\n\t"
"LDR r6, [r12, #16]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r8, [%[sha256], #28]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #28]\n\t"
"STR r9, [%[sha256], #12]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_4_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_4\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_4_%=\n\t"
#endif
"LDR r6, [sp, #8]\n\t"
"LDR r7, [sp, #52]\n\t"
"LDR r8, [sp, #20]\n\t"
"LDR r9, [sp, #16]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #16]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_4:\n\t"
#else
"L_SHA256_transform_len_blk_end_4_%=:\n\t"
#endif
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r9, [%[sha256], #8]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #20]\n\t"
"LDR r6, [r12, #20]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r8, [%[sha256], #24]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #24]\n\t"
"STR r9, [%[sha256], #8]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_5_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_5\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_5_%=\n\t"
#endif
"LDR r6, [sp, #12]\n\t"
"LDR r7, [sp, #56]\n\t"
"LDR r8, [sp, #24]\n\t"
"LDR r9, [sp, #20]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #20]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_5:\n\t"
#else
"L_SHA256_transform_len_blk_end_5_%=:\n\t"
#endif
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r9, [%[sha256], #4]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #24]\n\t"
"LDR r6, [r12, #24]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r8, [%[sha256], #20]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #20]\n\t"
"STR r9, [%[sha256], #4]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_6_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_6\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_6_%=\n\t"
#endif
"LDR r6, [sp, #16]\n\t"
"LDR r7, [sp, #60]\n\t"
"LDR r8, [sp, #28]\n\t"
"LDR r9, [sp, #24]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #24]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_6:\n\t"
#else
"L_SHA256_transform_len_blk_end_6_%=:\n\t"
#endif
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r9, [%[sha256]]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #28]\n\t"
"LDR r6, [r12, #28]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r8, [%[sha256], #16]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #16]\n\t"
"STR r9, [%[sha256]]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_7_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_7\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_7_%=\n\t"
#endif
"LDR r6, [sp, #20]\n\t"
"LDR r7, [sp]\n\t"
"LDR r8, [sp, #32]\n\t"
"LDR r9, [sp, #28]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #28]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_7:\n\t"
#else
"L_SHA256_transform_len_blk_end_7_%=:\n\t"
#endif
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r9, [%[sha256], #28]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #32]\n\t"
"LDR r6, [r12, #32]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r8, [%[sha256], #12]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #12]\n\t"
"STR r9, [%[sha256], #28]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_8_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_8\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_8_%=\n\t"
#endif
"LDR r6, [sp, #24]\n\t"
"LDR r7, [sp, #4]\n\t"
"LDR r8, [sp, #36]\n\t"
"LDR r9, [sp, #32]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #32]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_8:\n\t"
#else
"L_SHA256_transform_len_blk_end_8_%=:\n\t"
#endif
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r9, [%[sha256], #24]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #36]\n\t"
"LDR r6, [r12, #36]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r8, [%[sha256], #8]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #8]\n\t"
"STR r9, [%[sha256], #24]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_9_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_9\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_9_%=\n\t"
#endif
"LDR r6, [sp, #28]\n\t"
"LDR r7, [sp, #8]\n\t"
"LDR r8, [sp, #40]\n\t"
"LDR r9, [sp, #36]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #36]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_9:\n\t"
#else
"L_SHA256_transform_len_blk_end_9_%=:\n\t"
#endif
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r9, [%[sha256], #20]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #40]\n\t"
"LDR r6, [r12, #40]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r8, [%[sha256], #4]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #4]\n\t"
"STR r9, [%[sha256], #20]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_10_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_10\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_10_%=\n\t"
#endif
"LDR r6, [sp, #32]\n\t"
"LDR r7, [sp, #12]\n\t"
"LDR r8, [sp, #44]\n\t"
"LDR r9, [sp, #40]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #40]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_10:\n\t"
#else
"L_SHA256_transform_len_blk_end_10_%=:\n\t"
#endif
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r9, [%[sha256], #16]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #44]\n\t"
"LDR r6, [r12, #44]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r8, [%[sha256]]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256]]\n\t"
"STR r9, [%[sha256], #16]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_11_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_11\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_11_%=\n\t"
#endif
"LDR r6, [sp, #36]\n\t"
"LDR r7, [sp, #16]\n\t"
"LDR r8, [sp, #48]\n\t"
"LDR r9, [sp, #44]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #44]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_11:\n\t"
#else
"L_SHA256_transform_len_blk_end_11_%=:\n\t"
#endif
"LDR r5, [%[sha256]]\n\t"
"LDR r6, [%[sha256], #4]\n\t"
"LDR r7, [%[sha256], #8]\n\t"
"LDR r9, [%[sha256], #12]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #48]\n\t"
"LDR r6, [r12, #48]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #16]\n\t"
"LDR r6, [%[sha256], #20]\n\t"
"LDR r7, [%[sha256], #24]\n\t"
"LDR r8, [%[sha256], #28]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #28]\n\t"
"STR r9, [%[sha256], #12]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_12_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_12\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_12_%=\n\t"
#endif
"LDR r6, [sp, #40]\n\t"
"LDR r7, [sp, #20]\n\t"
"LDR r8, [sp, #52]\n\t"
"LDR r9, [sp, #48]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #48]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_12:\n\t"
#else
"L_SHA256_transform_len_blk_end_12_%=:\n\t"
#endif
"LDR r5, [%[sha256], #28]\n\t"
"LDR r6, [%[sha256]]\n\t"
"LDR r7, [%[sha256], #4]\n\t"
"LDR r9, [%[sha256], #8]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #52]\n\t"
"LDR r6, [r12, #52]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #12]\n\t"
"LDR r6, [%[sha256], #16]\n\t"
"LDR r7, [%[sha256], #20]\n\t"
"LDR r8, [%[sha256], #24]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #24]\n\t"
"STR r9, [%[sha256], #8]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_13_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_13\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_13_%=\n\t"
#endif
"LDR r6, [sp, #44]\n\t"
"LDR r7, [sp, #24]\n\t"
"LDR r8, [sp, #56]\n\t"
"LDR r9, [sp, #52]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #52]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_13:\n\t"
#else
"L_SHA256_transform_len_blk_end_13_%=:\n\t"
#endif
"LDR r5, [%[sha256], #24]\n\t"
"LDR r6, [%[sha256], #28]\n\t"
"LDR r7, [%[sha256]]\n\t"
"LDR r9, [%[sha256], #4]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #56]\n\t"
"LDR r6, [r12, #56]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #8]\n\t"
"LDR r6, [%[sha256], #12]\n\t"
"LDR r7, [%[sha256], #16]\n\t"
"LDR r8, [%[sha256], #20]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r10, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r11, r11, r10\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r11, r11, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r11\n\t"
"STR r8, [%[sha256], #20]\n\t"
"STR r9, [%[sha256], #4]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_14_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_14\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_14_%=\n\t"
#endif
"LDR r6, [sp, #48]\n\t"
"LDR r7, [sp, #28]\n\t"
"LDR r8, [sp, #60]\n\t"
"LDR r9, [sp, #56]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #56]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_14:\n\t"
#else
"L_SHA256_transform_len_blk_end_14_%=:\n\t"
#endif
"LDR r5, [%[sha256], #20]\n\t"
"LDR r6, [%[sha256], #24]\n\t"
"LDR r7, [%[sha256], #28]\n\t"
"LDR r9, [%[sha256]]\n\t"
"ROR r4, r5, #6\n\t"
"EOR r6, r6, r7\n\t"
"EOR r4, r4, r5, ROR #11\n\t"
"AND r6, r6, r5\n\t"
"EOR r4, r4, r5, ROR #25\n\t"
"EOR r6, r6, r7\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [sp, #60]\n\t"
"LDR r6, [r12, #60]\n\t"
"ADD r9, r9, r5\n\t"
"ADD r9, r9, r6\n\t"
"LDR r5, [%[sha256], #4]\n\t"
"LDR r6, [%[sha256], #8]\n\t"
"LDR r7, [%[sha256], #12]\n\t"
"LDR r8, [%[sha256], #16]\n\t"
"ROR r4, r5, #2\n\t"
"EOR r11, r5, r6\n\t"
"EOR r4, r4, r5, ROR #13\n\t"
"AND r10, r10, r11\n\t"
"EOR r4, r4, r5, ROR #22\n\t"
"EOR r10, r10, r6\n\t"
"ADD r8, r8, r9\n\t"
"ADD r9, r9, r4\n\t"
"ADD r9, r9, r10\n\t"
"STR r8, [%[sha256], #16]\n\t"
"STR r9, [%[sha256]]\n\t"
"CMP r3, #0x0\n\t"
#if defined(__GNUC__)
"BEQ L_SHA256_transform_len_blk_end_15_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BEQ.N L_SHA256_transform_len_blk_end_15\n\t"
#else
"BEQ.N L_SHA256_transform_len_blk_end_15_%=\n\t"
#endif
"LDR r6, [sp, #52]\n\t"
"LDR r7, [sp, #32]\n\t"
"LDR r8, [sp]\n\t"
"LDR r9, [sp, #60]\n\t"
"ROR r4, r6, #17\n\t"
"ROR r5, r8, #7\n\t"
"EOR r4, r4, r6, ROR #19\n\t"
"EOR r5, r5, r8, ROR #18\n\t"
"EOR r4, r4, r6, LSR #10\n\t"
"EOR r5, r5, r8, LSR #3\n\t"
"ADD r9, r9, r7\n\t"
"ADD r4, r4, r5\n\t"
"ADD r9, r9, r4\n\t"
"STR r9, [sp, #60]\n\t"
"\n"
#if defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"L_SHA256_transform_len_blk_end_15:\n\t"
#else
"L_SHA256_transform_len_blk_end_15_%=:\n\t"
#endif
"CMP r3, #0x0\n\t"
"ADD r12, r12, #0x40\n\t"
#if defined(__GNUC__)
"BNE L_SHA256_transform_len_start_small_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BNE.W L_SHA256_transform_len_start_small\n\t"
#else
"BNE.W L_SHA256_transform_len_start_small_%=\n\t"
#endif
#endif
"LDRD r4, r5, [%[sha256]]\n\t"
"LDRD r6, r7, [%[sha256], #8]\n\t"
"LDRD r8, r9, [sp, #64]\n\t"
"LDRD r10, r11, [sp, #72]\n\t"
"ADD r4, r4, r8\n\t"
"ADD r5, r5, r9\n\t"
"ADD r6, r6, r10\n\t"
"ADD r7, r7, r11\n\t"
"STRD r4, r5, [%[sha256]]\n\t"
"STRD r6, r7, [%[sha256], #8]\n\t"
"STRD r4, r5, [sp, #64]\n\t"
"STRD r6, r7, [sp, #72]\n\t"
"LDRD r4, r5, [%[sha256], #16]\n\t"
"LDRD r6, r7, [%[sha256], #24]\n\t"
"LDRD r8, r9, [sp, #80]\n\t"
"LDRD r10, r11, [sp, #88]\n\t"
"ADD r4, r4, r8\n\t"
"ADD r5, r5, r9\n\t"
"ADD r6, r6, r10\n\t"
"ADD r7, r7, r11\n\t"
"STRD r4, r5, [%[sha256], #16]\n\t"
"STRD r6, r7, [%[sha256], #24]\n\t"
"STRD r4, r5, [sp, #80]\n\t"
"STRD r6, r7, [sp, #88]\n\t"
"SUBS %[len], %[len], #0x40\n\t"
#ifndef WOLFSSL_ARMASM_SHA256_SMALL
"SUB r12, r12, #0xc0\n\t"
#else
"SUB r12, r12, #0x100\n\t"
#endif
"ADD %[data], %[data], #0x40\n\t"
#if defined(__GNUC__)
"BNE L_SHA256_transform_len_begin_%=\n\t"
#elif defined(__IAR_SYSTEMS_ICC__) && (__VER__ < 9000000)
"BNE.W L_SHA256_transform_len_begin\n\t"
#else
"BNE.W L_SHA256_transform_len_begin_%=\n\t"
#endif
"ADD sp, sp, #0xc0\n\t"
: [sha256] "+r" (sha256), [data] "+r" (data), [len] "+r" (len),
[L_SHA256_transform_len_k] "+r" (L_SHA256_transform_len_k_c)
:
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
"r12"
);
}
#endif
#endif
#endif
#endif
#endif